美文网首页iOS 知识点iOS
iOS懒加载(self.value与_value注意)

iOS懒加载(self.value与_value注意)

作者: 火星抄手 | 来源:发表于2016-12-03 15:17 被阅读432次

周末闲来无事,想谈谈自己开发中的一些浅认识。最近看自己以前写的代码,大量的UI初始化写在视图加载viewDidLoad方法中,这显然是不规范和不专业的。写出高质量优美的代码,应该是一个进阶程序员的共同追求,今天首先想谈谈在UI加载优化中经常用到的iOS懒加载。

1、iOS懒加载定义

在iOS5之前需要使用编译器指令@synthesize告诉编译器帮助生成属性的getter,setter方法。之后会默认生成。编译器在生成getter,setter方法时先检查有没有自定义getter,setter方法,如果有则使用自定义的,没有定义系统就默认生成。
懒加载可以定义为:延时加载,即当对象需要用到的时候再去加载。其实就是重写属性的getter方法,然后加一个判断,为空则赋值,不为空则返回。

#import "testViewController.h"
@interface ViewController ()
@property (nonatomic, strong) UIView *testView;
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addSubview:self. testView]; //注意:一定要是self.testView,如果是_testView子视图会为nil
 }
// 懒加载
-(UIView *) testView {
   if (_testView == nil) {
       _testView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 30)];
       _testView.backgroundColor = [UIColor redColor];
   }
   return _testView;
}
@end

2、iOS懒加载注意事项

1)、重写getter方法时,先判断对象当前是否为空,为空的话再去实例化对象;
2)、当使用self. testView会调用testView的getter方法而_ testView并不会调用,正确的使用个方式是通过self. testView去调用才会执行懒加载方法。

很多初学者在懒加载定义之外区域调用懒加载变量时,不怎么注意self. testView 和 _ testView的区别,一直使用_testView,所以才导致懒加载方法一直没有被调用。原因分析:self. testView会调用类的getter方法,而如果直接用_testView只是直接访问类的实例变量,而不会调用getter方法了。

3、iOS懒加载的优点

1)、对系统的内存占用率会减小;
2)、对象的实例化在getter方法中,各司其职,降低耦合性;
3)、不需将对象的实例化写到viewDidLoad,可以简化代码。

相关文章

  • iOS懒加载(self.value与_value注意)

    周末闲来无事,想谈谈自己开发中的一些浅认识。最近看自己以前写的代码,大量的UI初始化写在视图加载viewDidLo...

  • iOS懒加载(self.value与_value注意)

    周末闲来无事,想谈谈自己开发中的一些浅认识。最近看自己以前写的代码,大量的UI初始化写在视图加载viewDidLo...

  • Swift的懒加载和只读属性的介绍

    懒加载 在 iOS 开发中,懒加载是无处不在的 懒加载的格式如下: lazy var person: Person...

  • iOS-UI-懒加载

    原文找不到了 iOS-UI-懒加载 1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内...

  • iOS懒加载注意事项

    懒加载 1.懒加载 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其ge...

  • 2018-12-21

    iOS开发中懒加载遇到的坑 正常写一个懒加载对象 - (MAMapView*)mapView{ if(nil=...

  • Swift:)懒加载Lazy

    OC中,要实现懒加载是用到getter方法,例如 Swift懒加载差别就很大了,懒加载属性用lazy修饰,注意结尾...

  • iOS 数组 NSArray 遍历 懒加载总结

    iOS开发之懒加载 iOS中数组遍历的方法及比较

  • Swift语法点

    1 懒加载 懒加载与OC中的懒加载的区别:懒加载的类一旦 设置为nil 后, 懒加载就不会再次执行,与OC中不同,...

  • iOS开发——懒加载

    懒加载的定义 懒加载也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。iOS设备的内存有限,如果程序在启...

网友评论

    本文标题:iOS懒加载(self.value与_value注意)

    本文链接:https://www.haomeiwen.com/subject/hzlcmttx.html