7.系统框架

2018-01-04  本文已影响8人  开发者老岳

第47条 熟悉系统框架

第48条 多用枚举块,少用for循环

反向遍历:

NSArray *array = @[@1, @2];
for (NSNumber *obj in [array reverseObjectEnumerator]) {
    NSLog(@"obj == %@", obj);
}
打印结果:2 1

第 49条 对自定义内存管理的对象使用无缝桥接


后面介绍了如何创建CoreFoundation中的字典,并转为Foundation中的字典。(此处省略)

第50条 创建缓存时用NSCache而非NSDictionary

当请求网络图片时,可以将图片缓存起来,可以放到NSCache里。

第51条 精简 initialize 和 load 的实现代码

+ (void)load;
+ (void)initialize;
Person里:
+ (void)initialize
{
    NSLog(@"%@ -- initialize", self);
}
打印结果:
Person -- initialize
Student -- initialize

所以一般该方法都会加一个判断,这样若子类未实现的话就不会打印两次了。

+ (void)initialize {
  if (self == [Person self]) {
    // ... do the initialization ...
  }
}
第52条 NSTimer 会保留其目标对象

若在dealloc里取消定时器是不正确的,因为定时器强引用了当前类,导致dealloc根本没被调用。


上一篇 下一篇

猜你喜欢

热点阅读