美文网首页
第27条:使用“class-continuation分类”隐藏实

第27条:使用“class-continuation分类”隐藏实

作者: MrSYLong | 来源:发表于2018-09-23 23:15 被阅读8次

    class-continuation分类和普通分类不同,没有名字,必须定义在其所接续的类的实现文件中,是唯一能声明实例变量的分类。

    EOCPerson类的class-continuation分类:

    // 实现文件中
    @interface EOCPerson()
    // 可以定义方法、属性、实例变量
    @end
    
    class-continuation分类用法一:

    无需对外公开但应该具有的方法、实例变量,可以使用class-continuation分类。(虽然运行时系统的工作决定不可能实现真正的私有方法与实例变量)

    @interface EOCPerson() {
        // 定义实例变量 在class-continuation分类
        NSString *_anInstanceVariable;
    }
    
    @end
    
    @implementation EOCPerson {
        // 定义实例变量 在实现块 与定义在class-continuation分类等效
        int *_anotherInstanceVariable;
    }
    @end
    
    class-continuation分类用法二:

    在编写Objective-C++代码时,实现文件扩展名可能为.mm,.mm扩展名表示编译器应该将此文件按照Objective-C++编译,否则无法正确引入C++文件。

    应该在实现文件加载C++文件,在class-continuation分类中声明C++实例变量。

    理由:如果在一个类头文件加载C++文件,那么所有引入此类的文件都必须编译为Objective-C++才行,他们也都引入了C++文件,所以这样做不合适。

    class-continuation分类用法三:

    在公共接口声明为“只读”的属性扩展为“可读写”,属性的内存管理语义不能改变,必须相同。

    class-continuation分类用法四:

    类的私有方法可以声明在class-continuation分类中,这样可以把类里面所含的相关的方法都统一描述于此。
    现在的编译器已经不强制在使用方法之前必须先声明。

    class-continuation分类用法五:

    若对象所遵从的协议不想为人所知,则可在class-continuation分类中声明。

    相关文章

      网友评论

          本文标题:第27条:使用“class-continuation分类”隐藏实

          本文链接:https://www.haomeiwen.com/subject/ejhqoftx.html