Object-C 常用知识点(一)

以下是实际开发中用到的知识点,但是又想不起来,需要之注意的知识点



#pragma mark --isKindOfClass与isMemberOfClass

isKindOfClass 是对于继承来讲的 Teacher : Person : NSObject

teacher 是Teacher、Person、NSObject类或其子类

isMemberOfClass 是对于该类(Teacher)的成员来讲的 判断是不是由该类创建出来的

teacher 是Teacher类的成员,由Teacher类创建的 判断的内容更加精确。

isSubclassOfClass 使用和isKindOfClass差不多/只不过一个是类方法,一个是对象方法



#pragma mark -- super、superClass、class的区别

class:获取方法调用者类名

superclass:获取方法调用者的父类类名

super:编译修饰符,不是指针,指向父类的 "标志",

本质还是拿到当前对象去调用父类的方法

注意:super并不是拿到父类对象去调用父类方法



#pragma mark -- removeFromSuperview

// 移除contentView上所有的子控件

[self.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];



#pragma mark -- 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];

}

#pragma mark -- 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

#pragma mark -- NSDictionary

字典里面添加另外一个字典

[dictionaryM addEntriesFromDictionary: newDictionary];

判断字典里面是否包含某一个key

if ([[dicitionary allKeys] containsObject:key])

#pragma mark -- NSString

判断一个字符串是否为空,首先就要确保他不是null(不是空对象),然后再判断他的长度(是一个对象后再判断长度)。

if(string != NULL && string.length != 0) {字符串里面才有东西}

if([string isKindOfClass:[NSNull Class]] || string.length == 0) {字符串为空}

控制台打印的NSNumber和NSString是一样的,需要注意!!!!!

#pragma mark -- 自定义代码块存放路径

在Finder文件夹command + Shift + G

~/Library/Developer/Xcode/UserData/CodeSnippets

换新电脑,直接替换文件夹中的内容即可。

#pragma mark -- 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 + 空格

显示隐藏文件  shift + Command + .

类文件之间的跳转 Ctrl + Command + 上箭头 / 下箭头

折叠代码 command + option(Alt) + 左箭头/右箭头

退回 command + Ctrl + 左箭头/右箭头

当前文件中全部选中当前单词 Ctrl + Command + E

命令行输入 find . -name "*.m" | xargs wc -l 查找当前路径下的所有.m文件行数

#pragma mark -- 网络安全协议

URL的基本格式:协议://主机地址/路径

不同的协议:代表不同的资源查找方式,资源传输方式 http file mailto FTP

主机地址:存放资源的主机的IP地址

路径:资源在主机中的具体位置

NSAppTransportSecurity

NSAllowsArbitraryLoads

#pragma mark -- window

//这样获得的窗口是目前显示在屏幕最上面的窗口 取出来的可能不是keywindow 因为:键盘也是一个窗口(window)

UIWindow * window = [[UIApplication sharedApplication].windows lastObject];

UIWindow * window = [UIApplication sharedApplication].keyWindow; 通常用这个

#pragma mark -- static

C语言中的static

a. 修饰局部变量.

b. 修饰全局变量.

c. 修饰函数.

Object-C中的static关键字.

a. static不能修饰属性 也不能修饰方法.

b. static可以修饰方法中的局部变量.

如果方法中的局部变量被static修饰,那么这个变量就会被变成静态变量.

存储在常量区 当方法执行完毕之后 不会回收 下次再执行这个方法的时候 直接使用 而不会再声明了.

#pragma mark -- 内存中的五大区域

栈: 局部变量. 当局部变量的作用域被执行完毕之后,这个局部变量就会被系统立即回收.

堆: OC对象.使用C函数申请的空间.

BSS段: 未初始化的全局变量、静态变量. 一旦初始化就回收 并转存到数据段之中.

数据段: 已经初始化的全局变量、静态变量. 直到程序结束的时候才会被回收.

代码段: 代码. 程序结束的时候,系统会自动回收存储在代码段中的数据.

栈、BSS段、数据段、代码段存储在它们中的数据的回收,是由系统自动完成的.不需要我们干预.

#pragma mark -- 单个对象的内存泄露.

1).什么叫做内存泄露?

指对象没有被回收,该回收的时候而没有被回收,一直驻留在内存之中直到程序结束.

2).单个对象发生内存泄露的原因.

-> 有对象的创建,没有匹配的release

-> retain与release不匹配.

-> 在不恰当的时候,指针赋值为nil

-> 在方法中不当使用retain.

3).如何做到单个对象被正确释放

-> 有对象的创建就要有对象的release。

-> 有多少个retain就要有多少个release。

-> 不要轻易的为1个指针赋值为nil 除非指针是1个野指针.

-> 在方法中不要轻易的为参数retain

#pragma mark - 枚举

//枚举的定义

typedef NS_ENUM(NSUInteger, ActionEnum) {

ActionEnumTop = 1 << 0,

ActionEnumBottom = 1 << 1,

ActionEnumLeft = 1 << 2,

ActionEnumRight = 1 << 3,

};

//调用

[self matchAction:ActionEnumTop | ActionEnumBottom];

//方法的处理

- (void)matchAction:(ActionEnum)actionEnum

{

NSLog(@"%ld", actionEnum);

if ((actionEnum & ActionEnumTop) == ActionEnumTop) {

NSLog(@"ActionEnumTop");

}

if ((actionEnum & ActionEnumBottom) == ActionEnumBottom) {

NSLog(@"ActionEnumBottom");

}

if ((actionEnum & ActionEnumLeft) == ActionEnumLeft) {

NSLog(@"ActionEnumLeft");

}

if ((actionEnum & ActionEnumRight) == ActionEnumRight) {

NSLog(@"ActionEnumRight");

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容