iOS开发之常用技术点

关于@private 、@protected、@public 、

2018-12-26  本文已影响72人  杜小秦

基础概念

要知道OC中这几个关键词的作用要先了解一些基础的概念,就是实例变量

实例变量是指为类申明的变量,他们在相应的类实例(即对象)的生命周期中存在并拥有值,当对象被创建时,系统会为实例变量分配内存,当对象被释放时系统也会释放变量占用的内存。

实例变量把值存起来了,他所属的类想怎么访问就怎么访问,但是,只能和自己玩没意思,于是把实例变量暴露到@interface 去,但是这会违反 OOP的关键宗旨之一-- 封装。因此,我们更多使用声明实例变量是在 @implementation,如果外部硬要使用,我们也只能放在@interface 中了。不过,我们可以进行访问控制。

如何访问控制

这时,该@private ,@protected @public @package 出场了。

实例变量的外部访问方式是 ->,有没有一些高大上的点语法访问之类的呢?有的,各位看官请往下看

看箭头

自动申明属性

@property 关键词为类声明了一个属性,他能提供获取对象内部状态的方法(也就是 getter/setter方法),这里的内部状态主要是指该属性自动生成的带下划线开头与属性同名的实例变量。

上古时代,getter/setter方法的实现部分还需要在@implementation 中使用@synthersize 关键词,后来编译器可以自动补全了,他还是有一个作用的,就是改变默认生成的实例变量的名字 改名
自动的东西,有时候是多余的,有时候我们并不想生成 getter/setter方法 ,这个时候也有办法,用@dynamic关键字 动态生成

他叫动态生成,其实就是自己去实现 getter/setter方法,如果没有实现,运行起来会出错的,告知发送了一条消息给一个未知对象。这应该就是他为什么叫动态生成的原因吧。

搞事情

至此,我们就可以愉快的使用点语法跟我们的属性一起玩耍啦。

上一篇下一篇

猜你喜欢

热点阅读