self.propertyName和_propertyName的区别

使用@property 声明一个属性变量,我们可以通过self.和_对其进行访问,那么这两者之间有什么区别呢?经过多方探究,我小小的总结了一下,在此记录一下我的研究心路历程吧^ ^
第一步:
在@interface 中 使用@property 声明了一个属性名为bgScrollView的变量

C9FEF244-B2F3-4FAB-8132-706D6186FDA0.png

第二步:
使用懒加载创建该属性名为bgScrollView的视图

self.propertyName和_propertyName的区别_第1张图片
4176E4AB-671D-4FBD-9454-165A66424EDB.png

第三步:
将该视图加载到其父视图上 此处呢 一般情况下都是会用 [self addSubview:self.bgScrollView]; 进行加载,此时加载是正常的,而有时你可能会问为什么不使用[self addSubview:_bgScrollView]呢; 这是因为_bgScrollView是直接访问该实例变量,并没有调用其getter 方法,所以若此时你通过_bgScrollView进行打印,则显示的为(null) 这是因为它并没有调用getter方法而进行创建的原因。

你可能感兴趣的:(self.propertyName和_propertyName的区别)