Object-C知识点
Object-C常用的知识点,以下为我在实际开发中用到的知识点,但是又想不起来,需要百度一下的知识点
1.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #78492a }
span.s1 { }
span.s2 { font: 20.0px "PingFang SC" }
isKindOfClass与isMemberOfClass的区别
isKindOfClass 是对于继承来讲的 Teacher : Person : NSObject
teacher 是Teacher、Person、NSObject类或其子类
isMemberOfClass 是对于该类(Teacher)的成员来讲的 判断是不是由该类创建出来的
teacher 是Teacher类的成员,由Teacher类创建的 判断的内容更加精确。
isSubclassOfClass 使用和isKindOfClass差不多/只不过一个是类方法,一个是对象方法
2.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #78492a }
span.s1 { }
span.s2 { font: 20.0px "PingFang SC" }
super、superClass、class的区别
class:获取方法调用者类名
superclass:获取方法调用者的父类类名
super:编译修饰符,不是指针,指向父类的 "标志",
本质还是拿到当前对象去调用父类的方法
注意:super并不是拿到父类对象去调用父类方法
3.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #78492a }
span.s1 { }
removeFromSuperview
// 移除contentView上所有的子控件
[self.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
4.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #78492a }
span.s1 { }
span.s2 { font: 20.0px "PingFang SC" }
isEqual、==、isEqualToString
isEqual与==是一样的 比较内存地址
isEqualToString 比较对象的内容
可以重写对象的isEqual方法来欺骗系统,通常用来完成从数组中删除某个对象不能实现 (对象一样但是内存地址不一样)
也可以通过比较内存是否一样进行删除的操作 --->重写更符合封装的原则
[persons removeObject:person]; 这样返回YES的时候才会去删除该对象,返回NO认为数组中没有该对象,肯定不会删除
在person.m中实现下面的方法
- (BOOL)isEqual:(id)object
{//系统默认
//return self == object;
//当一个人的name和年龄一样的时候就认为是同一个人
return [self.name isEqualToString:other.name] && [self.age isEqualToString:other.age];
}
5.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #78492a }
span.s1 { }
nil Nil NULL NSNull
nil:指向oc中对象的空指针 对象是空的 对象是存在的
Nil:指向oc中类的空指针 类是空的
NULL:指向其他类型的空指针,如一个c类型的内存指针 还不是一个对象
NSNull:在集合对象中,表示空值的对象
1、NULL表示这个字符串不指向任何的东西,如果这时候你调用它的方法,那么就会出现空指针异常。
2、""表示它指向一个长度为0的字符串,这时候调用它的方法是安全的。
3、NULL不是对象,""是对象,所以NULL没有分配空间,""分配了空间
*******结论********
在OC/C++中,nil可以调用任何的方法,都不会报错
NULL 表示地址是0
nil是指针指向NULL的空对象 nil是一个对象,但是是一个空对象
若obj为nil:
[obj message]将返回NO,而不是NSException
若obj为NSNull:
[obj message]将抛出异常NSException
6.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #78492a }
span.s1 { }
NSDictionary
字典里面添加另外一个字典
[dictionaryM addEntriesFromDictionary: newDictionary];
判断字典里面是否包含某一个key
if ([[dicitionary allKeys] containsObject:key])
7.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #78492a }
span.s1 { }
NSString
判断一个字符串是否为空,首先就要确保他不是null(不是空对象),然后再判断他的长度(是一个对象后再判断长度)。
if(string != NULL && string.length != 0) {字符串里面才有东西}
if([string isKindOfClass:[NSNull Class]] || string.length == 0) {字符串为空}
控制台打印的NSNumber和NSString是一样的,需要注意!!!!!
8.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #78492a }
span.s1 { font: 20.0px "PingFang SC" }
span.s2 { }
显示与隐藏文件yinchang
默认情况下,模拟器的目录是隐藏的,要想显示出来,需要在Mac终端输入下面的命令:
显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles YES
隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles NO
重启Finder:鼠标单击窗口左上角的苹果标志-->强制退出-->Finder-->重新启动
9.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px "PingFang SC"; color: #78492a }
span.s1 { }
自定义代码块存放路径
在Finder文件夹command + Shift + G
~/Library/Developer/Xcode/UserData/CodeSnippets
换新电脑,直接替换文件夹中的内容即可。
10.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #78492a }
span.s1 { }
span.s2 { font: 20.0px "PingFang SC" }
Xcode中的快捷键
停用断点 command+control+\
当前行插入断点 command+\
当前行启用断点 command+option+\
最小化 command+m
全部最小化 command+option+m
网络: command + Shift + C
强制重新启动Mac control+command+右上角
便签/Xcode的控制台输出 command+shift+Y
展示文件的真实位置 command+shift+J
打开emoji表情键盘 command + control + 空格
类文件之间的跳转 Ctrl + Command + 上箭头 / 下箭头
折叠代码 command + option(Alt) + 左箭头/右箭头
退回 command + Ctrl + 左箭头/右箭头
当前文件中全部选中当前单词 Ctrl + Command + E
11.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px "PingFang SC"; color: #78492a }
span.s1 { }
网络安全协议
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
12.
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #78492a }
span.s1 { }
window
//这样获得的窗口是目前显示在屏幕最上面的窗口 取出来的可能不是keywindow 因为:键盘也是一个窗口(windows)
UIWindow * window = [[UIApplication sharedApplication].windows lastObject];
UIWindow * window = [UIApplication sharedApplication].keywindow; 通常用这个
12.
static
C语言中的static
a. 修饰局部变量.
b. 修饰全局变量.
c. 修饰函数.
Object-C中的static关键字.
a. static不能修饰属性 也不能修饰方法.
b. static可以修饰方法中的局部变量.
如果方法中的局部变量被static修饰,那么这个变量就会被变成静态变量.
存储在常量区 当方法执行完毕之后 不会回收 下次再执行这个方法的时候 直接使用 而不会再声明了.
13.
内存中的五大区域
栈: 局部变量. 当局部变量的作用域被执行完毕之后,这个局部变量就会被系统立即回收.
堆: OC对象.使用C函数申请的空间.
BSS段: 未初始化的全局变量、静态变量. 一旦初始化就回收 并转存到数据段之中.
数据段: 已经初始化的全局变量、静态变量. 直到程序结束的时候才会被回收.
代码段: 代码. 程序结束的时候,系统会自动回收存储在代码段中的数据.
栈、BSS段、数据段、代码段存储在它们中的数据的回收,是由系统自动完成的.不需要我们干预.
有任何关于iOS开发的问题!欢迎下方留言!!!或者邮件lieryangios@126.com 虽然我不一定能够解答出来,但是我会请教iOS开发高手!!!解答您的问题!!!
Object-C知识点的更多相关文章
- 面向对象高级——Object类、包装类以及匿名内部类
Object类 知识点:掌握Object类的作用.掌握Object类中toString().equal()方法的作用 ,掌握Object接收引用数据类型的操作. 假设一个类在定义时没有明白指明继承哪 ...
- 你真的了解NSNotificationCenter吗?
一:首先查看一下关于NSNotificationCenter的定义 @interface NSNotificationCenter : NSObject { @package void * __str ...
- zTree的后台数据绑定
前台js: var treeNodes; $.ajax({ async: false, cache: false, type: 'POST', contentType: "applicati ...
- Java知识点:Object类
toString()方法 原始实现: public String toString() { return getClass().getName() + "@" + Integer. ...
- 图形验证码知识点整理 Object.prototype.toString.call()等
使用typeof bar === "object"检测”bar”是否为对象有什么缺点?如何避免?这是一个十分常见的问题,用 typeof 是否能准确判断一个对象变量,答案是否定的, ...
- scala的object知识点
1:object的中的代码,会在object对象被调用的时候执行且只会执行一次 object Demo{ println("gaoxing") def name = "n ...
- 16、前端知识点--Object.defineProperty 的用法+双向数据绑定原理解析
一.Object.defineProperty 的用法 Object.defineProperty 可以用于给对象添加更新属性. <script> // Object.defineProp ...
- 对象存储服务 OSS(Object Storage Service),知识点(待补充上仓库代码)
资料 网址 官方文档 https://help.aliyun.com/product/31815.html?spm=a2c4g.11186623.3.1.3e1459669xRokl OSS Brow ...
- CSharpGL(38)带初始数据创建Vertex Buffer Object的情形汇总
CSharpGL(38)带初始数据创建Vertex Buffer Object的情形汇总 开始 总的来说,OpenGL应用开发者会遇到为如下三种数据创建Vertex Buffer Object的情形: ...
- JavaScript易错知识点整理
前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...
随机推荐
- python - bilibili(一)获取直播间标题
近几年,直播平台蛮火的.小时候,经过各种日漫的洗礼,在直播平台自然而然的就盯上了B站. 目前还是python菜鸟一枚,各位大佬请轻拍. 最终效果图: 闲话不说,我们来一步步解析B站的弹幕. 工具:py ...
- 网易云直播SDK使用总结
前言: 最近公司的项目中加入中直播这部分的功能,现在的直播平台真的很多很多,以前在朋友圈看到过这张图片,没办法一次性给大家看,就只能这样截成几张给大家看看.其实按照我自己的看法,现在的直播已经没办法做 ...
- 《汇编语言程序设计》——仿windows计算器
<汇编语言程序设计> ——计算器程序设计 目录 一. 题目与目标 1. 题目 2. 学习目的 二. 分析与设计 1. 系统分析 2. ...
- linux下载时提示请尝试移除磁盘中不需要的文件并重试,或者保存到其他位置
因为我是用虚拟机装的linux,所以当时就分配了20G硬盘,下载了几个应用后再下载就提示我这个了.一开始我还以为是因为下载链接的问题,后来才知道原来是因为/tmp的满了. 然后我输入以下连个命令就能正 ...
- JavaScript 基本类型值-String类型
▓▓▓▓▓▓ 大致介绍 String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串.在JavaScript中没有单个的字符型,都是字符串.字符型就相当于只包含一个字符的字符串. ...
- index_merge引发的死锁排查
概述 前几天排查了一个死锁问题,最开始百思不得其解,因为发生死锁的两个事务是单语句事务,语句类型相同(where属性列相同,仅值不同),而且语句都走了相同的索引,但最终确实发生了死锁.通过定位排查发现 ...
- 【转】Spring源码编译
原文地址: http://www.flyoung.me/2013/08/02/springcodecompile/ 参考资料: https://github.com/spring-projects/s ...
- 第六篇 项目疑问 ------- BaseService<T> where T : class, new() 含义
public abstract class BaseService<T> where T : class, new() { //当前仓储 //DbSession的存放 //为了职责单一的原 ...
- XCel 项目总结 - Electron 与 Vue 的性能优化
XCEL 是由凹凸实验室推出的一个 Excel 数据清洗工具,其通过可视化的方式让用户轻松地对 Excel 数据进行筛选. XCEL 基于 Electron 和 Vue 2.0 进行开发,充分利用 E ...
- 【2017-03-10】Tsql语句基础、条件,高级查询
一.语句基础 1.创建数据库:create database 数据库名(不能汉字,不能数字.符号开头) 2.删除数据库:drop database 数据库名 3.选用数据库:use 数据库名 4.创建 ...