1.为了强制一个对象隐藏其数据,编译器限制实例变量范围以限制其在程序中的可见性。

但是为了提供灵活性,苹果也让开发者显示设置范围(四选一)。

2.四种编译指令如下:

@private

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

@protected

实例变量能被声明它的类和子类,所有没有显示指定范围的实例变量都是@protected。

@public

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

@packge

使用modern运行时,一个@package实例变量在实现这个类的可执行文件镜像中实际上是@public的,但是在外面就是@private。

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

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

最新文章

  1. spark streaming kafka example
  2. maven 生成可执行的jar文件
  3. 如果让你来做HashMap扩容,如何实现在不影响读写的情况下扩容?
  4. ListView 的使用
  5. Vue2.0流式渲染中文乱码问题
  6. 【自然框架】终于把源码弄到git上了。
  7. java集合类
  8. sql:pivot unpivot
  9. mysql 段错误 (core dumped)
  10. 使用Thrift RPC编写程序(服务端和客户端)
  11. 1084: [SCOI2005]最大子矩阵 - BZOJ
  12. jQuery 源码分析 8: 回头看jQuery的构造器(jQuery.fn,jQury.prototype,jQuery.fn.init.prototype的分析)
  13. jQuery 源码分析4: jQuery.extend
  14. 设计模式(十四):Command命令模式 -- 行为型模式
  15. Qt自定义滚动条(不使用样式表)
  16. 安装xgboost
  17. CSS知识点总结[部分]
  18. JAVA中字符串比较equals()和equalsIgnoreCase()的区别
  19. TP图片上传
  20. 22.executor service Flask

热门文章

  1. 20145305 《Java程序设计》第4周学习总结
  2. 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现
  3. ramBufferSizeMB
  4. 九度OJ1084
  5. [SQL]SQL语言入门级教材_SQL数据操作基础(二)
  6. Windows消息初探(1)
  7. 日期:Date
  8. linux多线程
  9. Eclipse插件开发之基础篇(4) OSGi框架
  10. Centos7 Openstack - (第一节)基本环境配置