• @private@protected@public@package


    @private@protected@public@package

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

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

    Directive

    Meaning

    @private

    实例变量只能被本类自身访问

    @protected

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

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

     

    @public

     

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

    @package

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

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

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

    //使用示例

    {

        @private

        int privateNum;

        @protected

        int protectedNum;

        @public

        int publicNum;

        @package

        int packageNum;

    }

  • 相关阅读:
    jchdl
    jchdl
    jchdl
    jchdl
    jchdl
    jchdl
    jchdl
    UVa 437 (变形的LIS) The Tower of Babylon
    UVa 1025 (动态规划) A Spy in the Metro
    UVa 10129 (并查集 + 欧拉路径) Play on Words
  • 原文地址:https://www.cnblogs.com/chenhaosuibi/p/3440716.html
Copyright © 2020-2023  润新知