- 博客(15)
- 收藏
- 关注
转载 15.protocol
1.协议的定义@protocol 协议名称 // 方法声明列表....@end2.如何遵守协议1> 类遵守协议@interface 类名 : 父类名 @end2> 协议遵守协议@protocol 协议名称 @end3.协议中方法声明的关键字1> @required (默认) 要求实现,如果没有实现,会发出警告
2014-12-23 09:39:34 273
转载 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 291
转载 13.ARC
一.ARC为编译特性:ARC 的规则非常简单:只要还有一个变量指向对象,对象就会保持在内存中1.将用retain的地方换为strong,assign的地方不变。alloc的地方不再需要release,系统自动添加release,且在dealloc的地方不能用[super dealloc]。不允许调用release、retain、retainCount允许重写dealloc,但是
2014-12-23 09:38:04 342
转载 12.autorelease
1.autorelease的基本用法1> 会将对象放到一个自动释放池中2> 当自动释放池被销毁时,会对池子里面的所有对象做一次release操作3> 会返回对象本身4> 调用完autorelease方法后,对象的计数器不变2.autorelease的好处1> 不用再关心对象释放的时间2> 不用再关心什么时候调用release3.autorelease的使用注
2014-12-23 09:37:11 248
转载 11.循环引用
1.@class的作用:仅仅告诉编译器,某个名称是一个类@class Person; // 仅仅告诉编译器,Person是一个类2.开发中引用一个类的规范1> 在.h文件中用@class来声明类2> 在.m文件中用#import来包含类的所有东西3.两端循环引用解决方案1> 一端用retain2> 一端用assign
2014-12-23 09:36:28 303
转载 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 258
转载 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 314
转载 8.多个对象之间的内存管理
1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作)2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release) 3.谁retain,谁release 4.谁alloc,谁release
2014-12-23 09:34:32 276
转载 7.引用计数器的基本操作
1.方法的基本使用1> retain :计数器+1,会返回对象本身2> release :计数器-1,没有返回值3> retainCount :获取当前的计数器4> dealloc * 当一个对象要被回收的时候,就会调用 * 一定要调用[super dealloc],这句调用要放在最后面2.概念1> 僵尸对象 :所占用内存已经被回收的对象,僵尸对象不能再使用
2014-12-23 09:33:51 360
转载 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 243
转载 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 268
转载 4.类的本质(load/initialize)
1.当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法。只会调用一次。2.当第一次使用某个类时,就会调用当前类的+initialize方法3.先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法) 先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)
2014-12-23 09:31:23 280
转载 2.Objective -C其他特性
一.点语法:点语法实质是调用方法二.成员变量的作用域 @public : 在任何地方都能直接访问对象的成员变量@private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private)@protected : 可以在当前类及其子类的对象方法中直接访问 (@interface中默认就是@protected)@package :
2014-12-23 09:29:41 255
转载 1.Objective-C基本语法
一.封装 set方法1.作用: 提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤2.命名规范:1> 方法名必须以set开头2> set后面跟上成员变量的名称,成员变量的首字母必须大写3> 返回值一定是void4> 一定要接收一个参数,而且参数类型跟成员变量类型一致5> 形参的名称不能跟成员变量名一样*/- (void)setAge:(int
2014-12-23 09:28:33 280
转载 3.Objective -C Category-分类
分类的作用:在不改变原来类内容的基础上,可以为类增加一些方法使用注意: 1.分类只能增加方法,不能增加成员变量 2.分类方法实现中可以访问原来类中声明的成员变量 3.分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用 4.方法调用的优先级:分类(最后参与编译的分类优先) --> 原来类 --> 父类 下来如果需要扩展Person类的话:
2014-12-10 11:43:47 268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人