iOS @private,@protected,@public,@package详解及使用
2016-10-09 14:21
726 查看
首先我们可以先从字面上理解它们的意思。
@private 私有的
私有,也就是只有自己有,别人谁都不可用,哪怕亲如自己的孩子。
@protected 受保护的
相较上边的private而言,就咩有那么自私了,他自己可以用,自己的孩子也是可以共享的
@public 公共的
相较上边而言,那就牛了,谁都可以用,只要你有这个类的对象,就可以拿到public下的变量,够无私了吧
@package 包
这个主要是用于框架类,使用@private太限制,使用@protected或者@public又太开放,就使用这个package吧。
Directive
使用:
1.我创建了一个view,命名为YAOView,里边声明了几个变量,如下图:
2.我在实现中对这几个变量进行创建赋值,如下图:
没有报错,很正常的赋值。
3.创建一个view继承于YAOView,命名为YAOSubView,然后在实现文件中使用这几个变量,看下图:
由图中我们可以看出private类型的变量在子类中是拿不到的,别的都正常。
4.我们在另一个不相关的类中来拿这些变量,看是什么情况,当然了,你肯定得先把YAOView头文件导入到那个文件中:
至于那个@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,在这边没法测试,先说到这吧,希望能帮到大家。更好的理解和使用这几个关键字
相关文章推荐
- iOS 面试题~@private,@protected,@public,@package详解及使用
- 【iOS Tips】007-@protected,@private,@public,@package
- IOS的变量修饰词@public 、@protected、@package、@private,简称 4P
- IOS中的四种变量修饰关键字 @private @protected @public @package
- iOS中四种实例变量的范围类型@private@protected@public@package
- IOS基础--@private|@protected| @public|@package
- iOS中四种实例变量的范围类型@private@protected@public@package
- iOS中四种实例变量的范围类型@private@protected@public@package
- iOS中四种实例变量的范围类型@private@protected@public@package
- iOS中四种实例变量的范围类型@private@protected@public@package
- iOS面试题(2.类变量的@protected,@private,@public,@package声明各有什么含义)拓展:常用框架和第三方框架
- iOS中四种实例变量的范围类型@private@protected@public@package
- iOS中四种实例变量的范围类型@private@protected@public@package
- java作用域public ,private ,protected 及不写时的区别,static关键字的使用
- Java public/protected/package/private modifier
- java基础之关键字二( package、 class、import )和( static、fina ) 和(public、protected、private)
- Java中的访问控制public,private,protected,package
- C++继承详解:共有(public)继承,私有(private)继承,保护(protected)继承
- C++公有继承(public)、私有继承(private)、保护继承(protected)详解
- 详解C#防访问修饰符:public,private,protected,internal