摘要: retain 和 copy 的区别。 copy copy是通过旧对象创建一个新对象,新对象引用计数器为1,与旧对象的引用计数无关。 retain retain是创建一个指针,对象引用计数加1。retain 出来的指针和原对象的指针指向的内存地址是相同的。 如何实现copy 并不是所有对象都可以进行copy、mutableCopy 。对象如果可以被copy 则需要遵守NSCopying , 如果对象... 阅读全文
posted @ 2015-03-11 22:36 malongs.com 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 启动自动引用计数选项. 选择项目的属性文件 --》 搜索 automatic Reference --》 Objective-C Automatic Reference Counting --》 Yes ARC 和手动管理内存的区别。 ARC 并不是GC在运行中判断引用计数是否为0,从而清除内存。而是在代码编译之前通过静态分析工具Analyze自动生成内存管理代码。 开启ARC后,不能再使用ret... 阅读全文
posted @ 2015-03-11 22:34 malongs.com 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 手动内存管理 在进行内存管理的时候要注意内存管理的准则:谁开辟内存,谁释放内存(谁污染的谁治理) 。开辟内存之后,对象的引用计数为1,只有继承自NSObject的对象才有内促管理的概念, 当对象引用计数为0的时候对象的内存会被清理。 下列关键字会开辟内存,对象引用计数器+1 alloc new copy mutableCopy 下列是内存管理的相关方法。 retain :保留对象,对象... 阅读全文
posted @ 2015-03-11 22:33 malongs.com 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 类别 使用类别可以扩展类的功能,不管该类的源码是否存在都可以扩展,和继承的最大不同就是类别中的方法可以访问被扩展类的私有元素。 类别的命名通常使用"类+类别名"的形式,如 Person+PersonLife.h 类可以有多个类别。 类别会覆盖方法,如果类的方法和类别的方法冲突,则会调用类别的方法 类别可以访问私有元素,继承并不可以。 类别不能定义属性 类别的定义如下 #import "Pers... 阅读全文
posted @ 2015-03-11 22:31 malongs.com 阅读(247) 评论(0) 推荐(0) 编辑
摘要: SEL 类型 SEL 类型是用来描述一个方法的,可以理解为SEL是方法的指针.该SEL类型类似于Java中的Method类。OC中可以通过两种方法来获得SEL类型。 @selector(methodName) : NSSelectorFromString(@"methodName") ; 反射的方法 -(BOOL) isKindOfClass : (class) clazz isKindOfC... 阅读全文
posted @ 2015-03-11 22:29 malongs.com 阅读(227) 评论(0) 推荐(0) 编辑
摘要: ID类型 objective-c中id可以指向任何对象,在使用id的时候注意:不要再id后面加上'*' 。 id object = [[Child alloc] init]; // 类型转换 Child *child = (Child *) object ; [child myMethod] ;id 的缺点 id类型所存储的... 阅读全文
posted @ 2015-03-11 22:28 malongs.com 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 初始化方法的模板 -(id) init { // 标准初始化模板 self = [super init]; if (self) { // 实例变量初始化 } return self ; }多个初始化方法 @interface Person : NSObject// 定义属性@property(nonatomic) NSString *name ;... 阅读全文
posted @ 2015-03-11 22:27 malongs.com 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 继承的语法 在类的头文件中使用 ClassName : SuperClassName 的形式完成继承。我们每一个类都默认继承了NSObject 。 // 继承NSObject@interface Person : NSObject@end 子类不能访问父类的私有元素(实例变量、方法等)。 方法的复写 子类可以复写父类的方法,比如我们可以复写父类的description方法来展示当前类的信息。当使... 阅读全文
posted @ 2015-03-11 22:27 malongs.com 阅读(147) 评论(0) 推荐(0) 编辑
摘要: int在32bit和64bit有不同的最大值和占用不同的位数。 使用NSInteger,系统会根据当前环境(是32bit还是64bit)返回int 最大值。 NSUInteger 是 NSInteger 的无符号形式。 NSInteger 不是一个对象,它是基本数据类型的typedef ,格式化字符串使用%li. #if __LP64__ || (TARGET_OS_EMBEDDED && !... 阅读全文
posted @ 2015-03-11 22:25 malongs.com 阅读(880) 评论(0) 推荐(0) 编辑
摘要: 异常的捕捉 // @try 块捕捉异常 @try { // 这里发生了一个异常 @throw [NSException exceptionWithName:@"demo" reason:@"the exception demo" userInfo:nil] ; } @catch (NSExcept... 阅读全文
posted @ 2015-03-11 22:23 malongs.com 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 自定义文档生成NSData // 可变的NSData NSMutableData *data = [ NSMutableData data ] ; // 初始化序列化对象 NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:... 阅读全文
posted @ 2015-03-11 22:21 malongs.com 阅读(186) 评论(0) 推荐(0) 编辑