iOS @private,@protected,@public,@package详解及使用

首先我们可以先从字面上理解它们的意思。

@private 私有的

私有,也就是只有自己有,别人谁都不可用,哪怕亲如自己的孩子。

@protected 受保护的

相较上边的private而言,就咩有那么自私了,他自己可以用,自己的孩子也是可以共享的

@public 公共的

相较上边而言,那就牛了,谁都可以用,只要你有这个类的对象,就可以拿到public下的变量,够无私了吧

@package 包

这个主要是用于框架类,使用@private太限制,使用@protected或者@public又太开放,就使用这个package吧。

Directive

 

Meaning

@private

The instance variable isaccessible only within the class that declares it.

@protected

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

Theinstance variable is accessible within the class that declares itand within classes that inherit it. All instance variables withoutan explicit scope directive have @protected scope.

实例变量能被声明它的类和子类访问,所有没有显式制定范围的实例变量都是@protected


@public

Theinstance variable is accessible everywhere.

实例变量可以被在任何地方访问。


@package

Using themodern runtime, an @package instance variablehas @public scope inside theexecutable image that implements the class, but acts like@private outside.使用modern运行时,一个@package实例变量在实现这个类的可执行文件镜像中实际上是@public的,但是在外面就是@private【runtime需要再看一下苹果文档Runtime Programming Guide

The @package scope for Objective-Cinstance variables is analogous to private_extern for C variables andfunctions. Any code outside the class implementation’s image thattries to use the instance variable gets a link error.

Objective-C中的@package与C语言中变量和函数的private_extern类似。任何在实现类的镜像之外的代码想使用这个实例变量都会引发linkerror

Thisscope is most useful for instance variables in framework classes,where @private may be too restrictivebut @protected or @public toopermissive.

这个类型最常用于框架类的实例变量,使用@private太限制,使用@protected或者@public又太开放

使用:

1.我创建了一个view,命名为YAOView,里边声明了几个变量,如下图:

2.我在实现中对这几个变量进行创建赋值,如下图:

没有报错,很正常的赋值。

3.创建一个view继承于YAOView,命名为YAOSubView,然后在实现文件中使用这几个变量,看下图:

由图中我们可以看出private类型的变量在子类中是拿不到的,别的都正常。

4.我们在另一个不相关的类中来拿这些变量,看是什么情况,当然了,你肯定得先把YAOView头文件导入到那个文件中:

至于那个@package,在这边没法测试,先说到这吧,希望能帮到大家。更好的理解和使用这几个关键字

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值