ios 成员限制类型及属性操作类型

本文详细解释了Objective-C中实例变量的四种访问权限:private、protected、public和package,以及它们的特性与应用场景。对于框架类的实例变量,@package提供了一种在实现类的镜像中为变量提供公共访问性,但在外部则保持私有性的方法。

成员限制类型

@private

The instance variable is accessible only within the class that declares it.

实例变量只能被声明它的类访问


@protected

The instance variable is accessible within the class that declares it and within classes that inherit it. All instance variables without an explicit scope directive have @protected scope.
实例变量能被声明它的类和子类访问,所有没有显式制定范围的实例变量都是@protected,即objC中默认为此类型


@public
The instance variable is accessible everywhere.
实例变量可以被在任何地方访问。


@package
Using the modern runtime, an @package instance variable has @public scope inside the executable image that implements the class, but acts like @private outside.

使用modern运行时,一个@package实例变量在实现这个类的可执行文件镜像中实际上是@public的,但是在外面就是@private【runtime需要再看一下苹果文档Runtime Programming Guide】


The @package scope for Objective-C instance variables is analogous toprivate_extern for C variables and functions. Any code outside the class implementation’s image that tries to use the instance variable gets a link error.
Objective-C中的@package与C语言中变量和函数的private_extern类似。任何在实现类的镜像之外的代码想使用这个实例变量都会引发link error


This scope is most useful for instance variables in framework classes, where@private may be too restrictive but @protected or @public too permissive.
这个类型最常用于框架类的实例变量,使用@private太限制,使用@protected或者@public又太开放


2, 属性操作类型 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值