self.和self->

在访问对象的时候,self.和self->是一样的都是访问对象本身。当对这个对象声明属性,进行懒加载的时候self.属性,等于调用懒加载方法,而self->属性,就是调用这个属性的对象本身相当于_的作用

self. 是通过属性(property)访问对象成员的语法。属性是 Objective - C 提供的一种封装实例变量(ivar)的机制,它会自动生成对应的 getter 和 setter 方法。使用 self. 实际上是调用了属性的 getter 或 setter 方法。

self-> 是直接访问对象实例变量(ivar)的语法。实例变量是类中定义的变量,用于存储对象的状态。使用 self-> 可以绕过属性的 getter 和 setter 方法,直接访问实例变量。


访问方式:self. 是通过属性的 getter 和 setter 方法访问对象成员,而 self-> 是直接访问实例变量。

封装性:self. 提供了更好的封装性,隐藏了实例变量的具体实现;self-> 则直接暴露了实例变量,封装性较差。

内存管理:使用 self. 时,系统会根据属性的修饰符自动处理内存管理;使用 self-> 时,需要手动管理内存。

使用建议

一般情况下,建议优先使用 self. 来访问对象成员,因为它提供了更好的封装性和自动内存管理。

只有在对性能有严格要求或者有特殊需求时,才考虑使用 self-> 直接访问实例变量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容