- 头文件中尽可能少暴露变量或方法,而要使用extension或者category放在.m文件,或者专门的private头文件中
- 使用局部变量或者
__block变量代替
- 可以尽可能避免循环引用
-
减少对象消息
就是减少target-action和protocol,多使用block,UI和action在一起,代码不用跳来跳去。 -
模块化
多使用#pragma mark - XXX 分模块。
- MVVM 核心思想是 data binding, 就是使用KVO。
- 数据部分的逻辑抽取放在ViewModel中,然后让UI和ViewModel中的数据binding,这个不会减少代码量,但是会大大简化逻辑的复度。
- RAC 影响性能。回调栈太深,但是影响有限。
-
重写setter方法和Code Block Evaluation C Extension语法
self.searchBar = ({
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:({
CGRect frame = self.tableView.frame;
frame.size.height = 50.0f;
frame;
})];
searchBar.delegate = self;
searchBar;
});
语法优点:
- 结构会更加清晰
- 非常简洁的命名来命名局部变量(不怕重名)
- 复杂UI的开发
- 组合式view。view hierarchy