在我们用代码创建 UI 的时候,目前来说分为直接创建和懒加载创建,在我们公司这个就很明显。为了统一代码风格,我们必须做出一些选择。
// 直接创建
UILabel *testLabel = [[UILabel alloc] init];
// getter
- (UILabel *)testLabel {
if(!_testLabel) {
_testLabel = [[UILabel alloc] init];
}
return _testLabel;
}
首先来说一下懒加载,懒加载——也称为延迟加载,即在需要的时候才加载。所谓懒加载,写的是其getter方法。说的通俗一点,就是在开发中,当程序中需要利用的资源时。在程序启动的时候不加载资源,只有在运行当需要一些资源时,再去加载这些资源。
** 优点很明显:**
* 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强
* 每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合
* 只有当真正需要资源时,再去加载,节省了内存资源。
特别是美观上,一连串的 UI 创建放在一起,有时真是受不了,做了懒加载后,美观性真的舒服多了。但是同时也要注意,用懒加载后,效率是变低的。
提醒:懒加载也是苹果公司提倡的做法。iOS系统中很多地方都用到了懒加载的方式,比如 ViewController中的View的创建。
- (UIView *)view {
if (!_view) {
[self loadView];
[self viewDidLoad];
}
return _view;
}
[田伟宇大神获取的图片](http://casatwy.com/iosying-yong-jia-gou-tan-viewceng-de-zu-zhi-he-diao-yong-fang-an.html)总的说来,我是认为在大部分情况下是可以用懒加载的,特别是需要复用的,对效率要求没那么高的。
当然如果某些情况下,如自定义UICollectionViewCell中 UI 的时候,需要考虑整体性能,效率之类的,直接创建UI会好一点。
另外提到懒加载这种写法,我想我还是比较喜欢在 VC 中按上述田伟宇大神推荐的格式这样写,至少 UI 不要写在一坨。当然数量特别多的时候或者说整个项目团队的风格都不是这样的,也还是需要考虑的。
**PS :看完这篇文章感觉会更深: 惰性计算辨析 **
网友评论