![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Objective-C
文章平均质量分 60
noairman
这个作者很懒,什么都没留下…
展开
-
13.ARC
一.ARC为编译特性:ARC 的规则非常简单:只要还有一个变量指向对象,对象就会保持在内存中1.将用retain的地方换为strong,assign的地方不变。alloc的地方不再需要release,系统自动添加release,且在dealloc的地方不能用[super dealloc]。不允许调用release、retain、retainCount允许重写dealloc,但是转载 2014-12-23 09:38:04 · 331 阅读 · 0 评论 -
12.autorelease
1.autorelease的基本用法1> 会将对象放到一个自动释放池中2> 当自动释放池被销毁时,会对池子里面的所有对象做一次release操作3> 会返回对象本身4> 调用完autorelease方法后,对象的计数器不变2.autorelease的好处1> 不用再关心对象释放的时间2> 不用再关心什么时候调用release3.autorelease的使用注转载 2014-12-23 09:37:11 · 239 阅读 · 0 评论 -
11.循环引用
1.@class的作用:仅仅告诉编译器,某个名称是一个类@class Person; // 仅仅告诉编译器,Person是一个类2.开发中引用一个类的规范1> 在.h文件中用@class来声明类2> 在.m文件中用#import来包含类的所有东西3.两端循环引用解决方案1> 一端用retain2> 一端用assign转载 2014-12-23 09:36:28 · 296 阅读 · 0 评论 -
10.@property参数说明
// retain : 生成的set方法里面,release旧值,retain新值 1.set方法内存管理相关的参数* retain : release旧值,retain新值(适用于OC对象类型)* assign : 直接赋值(默认,适用于非OC对象类型)* copy : release旧值,copy新值2.是否要生成set方法* readwrite : 同转载 2014-12-23 09:35:58 · 250 阅读 · 0 评论 -
7.引用计数器的基本操作
1.方法的基本使用1> retain :计数器+1,会返回对象本身2> release :计数器-1,没有返回值3> retainCount :获取当前的计数器4> dealloc * 当一个对象要被回收的时候,就会调用 * 一定要调用[super dealloc],这句调用要放在最后面2.概念1> 僵尸对象 :所占用内存已经被回收的对象,僵尸对象不能再使用转载 2014-12-23 09:33:51 · 335 阅读 · 0 评论 -
6.SEL
SEL其实是对方法的一种包装,将方法包装成一个SEL类型的数据,去找对应的方法地址。找到方法地址就可以调用方法其实消息就是SEL Person *p = [[Person alloc] init]; [p test2];// NSString *name = @"test2";// SEL s = NSSelectorFromString(name);转载 2014-12-23 09:33:04 · 234 阅读 · 0 评论 -
5.description
Person *p = [[Person alloc] init]; NSLog(@"%@", p); // 1.会调用对象p的-description方法 // 2.拿到-description方法的返回值(NSString *)显示到屏幕上 // 3.-description方法默认返回的是“类名+内存地址” Class c = [Person转载 2014-12-23 09:32:20 · 259 阅读 · 0 评论 -
1.Objective-C基本语法
一.封装 set方法1.作用: 提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤2.命名规范:1> 方法名必须以set开头2> set后面跟上成员变量的名称,成员变量的首字母必须大写3> 返回值一定是void4> 一定要接收一个参数,而且参数类型跟成员变量类型一致5> 形参的名称不能跟成员变量名一样*/- (void)setAge:(int转载 2014-12-23 09:28:33 · 273 阅读 · 0 评论 -
15.protocol
1.协议的定义@protocol 协议名称 // 方法声明列表....@end2.如何遵守协议1> 类遵守协议@interface 类名 : 父类名 @end2> 协议遵守协议@protocol 协议名称 @end3.协议中方法声明的关键字1> @required (默认) 要求实现,如果没有实现,会发出警告转载 2014-12-23 09:39:34 · 266 阅读 · 0 评论 -
9.set方法的内存管理
内存管理代码规范:1.只要调用了alloc,必须有release(autorelease) 对象不是通过alloc产生的,就不需要release2.set方法的代码规范1> 基本数据类型:直接复制- (void)setAge:(int)age{ _age = age;}2> OC对象类型- (void)setCar:(Car *)car转载 2014-12-23 09:35:20 · 303 阅读 · 0 评论 -
8.多个对象之间的内存管理
1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作)2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release) 3.谁retain,谁release 4.谁alloc,谁release转载 2014-12-23 09:34:32 · 249 阅读 · 0 评论 -
2.Objective -C其他特性
一.点语法:点语法实质是调用方法二.成员变量的作用域 @public : 在任何地方都能直接访问对象的成员变量@private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private)@protected : 可以在当前类及其子类的对象方法中直接访问 (@interface中默认就是@protected)@package :转载 2014-12-23 09:29:41 · 246 阅读 · 0 评论 -
4.类的本质(load/initialize)
1.当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法。只会调用一次。2.当第一次使用某个类时,就会调用当前类的+initialize方法3.先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法) 先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)转载 2014-12-23 09:31:23 · 254 阅读 · 0 评论 -
3.Objective -C Category-分类
分类的作用:在不改变原来类内容的基础上,可以为类增加一些方法使用注意: 1.分类只能增加方法,不能增加成员变量 2.分类方法实现中可以访问原来类中声明的成员变量 3.分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用 4.方法调用的优先级:分类(最后参与编译的分类优先) --> 原来类 --> 父类 下来如果需要扩展Person类的话:转载 2014-12-10 11:43:47 · 259 阅读 · 0 评论 -
14.Block
block用来保存一段代码 block的标志:^ /* block跟函数很像: 1.可以保存代码 2.有返回值 3.有形参 4.调用方式一样 */ // 指针函数的指针 int (*p)(int, int) = sum; int d = p(10, 12);转载 2014-12-23 09:38:40 · 285 阅读 · 0 评论