1. setter和getter方法命名规则
- setter方法根据它所更改的属性名称来命名,并加上前缀set。如:setName: 、setEngine: 等。
- getter方法则是以其返回的属性名称命名。如:name、engine 等。不要将get用作getter方法的前缀。
- 补充知识:get这个词在Cocoa中有着特殊的含义。如果get出现在Cocoa的方法名称中,就意味着这个方法会将你传递的参教作为指针来返回数值。例如,NSData 中有一个getBytes:方法,它的参数就是用来存储字节的内存缓冲区的地址。如果你在存取方法的名称中使用了get,那么有经验的Cocoa编程人员就会习惯性地将指针当做参数传入这个方法,当他们发现这不过是一个简单的存取方法时就会感到困惑。
2. 正确比较字符串
- 比较字符串是否相等,应该使用isEqualToString: ,而不能仅仅比较字符串的指针值;== 运算符只判断两个字符串的指针数值,而不是它们所指的对象。
3. 属性值
- 如果没有为属性指定任何特性,它们会默认使用nonatomic和assign。如果自定义了setter或getter方法,那么就不能使用atomic特性了,必须使用nonatomic特性。
4. Core Foundation 对象内存管理
- 对于底层Core Foundation对象,我们只需要延续以前手动管理引用计数的办法即可(CFRetain、 CFRelease);
- ARC下,需要将一个Core Foundation对象转换成一个OC对象,这时候我们需要告诉编译器,装换过程中的引用计数需要如何调整
5. 并发和并行的区别
- 并发,指的是多个事情,在同一时间段内同时发生了
- 并行,指的是多个事情,在同一时间点上同时发生了
- 并发的多个任务之间是互相抢占资源的
- 并行的多个任务之间是不互相抢占资源的,
只有在多CPU的情况中,才会发生并行。否则,看似同时发生的事情,其实都是并发执行的。
网友评论