31、dispatch_once实现单例
+ (instancetype)sharedInstance {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [[self alloc] init];
});
return _instance;
}
32、多用枚举器,少用for循环
- 遍历collection的四种方式:
for循环、NSEnumerator、for..in..、block遍历。
-
block遍历本身使用的GCD形式,效率更高。
33、NSCache的使用
- 构建缓存的时候多用
NSCache,少用NSDictionary。NSCache能在收到系统内存警告的时候主动释放。
-
NSCache是线程安全的。
-
NSCache能够设置内存的开销。
34、+load和+initialize方法
-
+load方法不参与覆写机制,类的load方法先于分类的load方法执行。
-
initialize方法存在覆写机制,所以调用的时候要判断是那个类。
- 尽量精简这两个方法,提高程序的响应速度。
35、NSTimer会保留对象
@interface NSTimer (Block)
+ (NSTimer *)sn_scheduledTimerWithTimeInterval:(NSTimeInterval)ti block:(void(^)())block repeats:(BOOL)yesOrNo;
@end
@implementation NSTimer (Block)
+ (NSTimer *)sn_scheduledTimerWithTimeInterval: (NSTimeInterval)ti block:(void (^)())block repeats:(BOOL)yesOrNo{
return [self scheduledTimerWithTimeInterval:ti target:self selector:@selector(block_Invoke:) userInfo:[block copy] repeats:yesOrNo];
}
+ (void)block_Invoke:(NSTimer *)timer{
void(^block)() = timer.userInfo;
if (block) {
block();
}
}
@end
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。