• OC SDK framework如何开放接口和隐藏接口、属性,以及隐藏部分接口、属性


    注:属性和接口的方法一致,以接口为例

    开放接口:

    OC的文件分为.h和.m两种,.h文件,也就是头文件,这里有个

    1. @interface test : NSObject
    2. -(void)test;
    3. @end

    这里面声明的所有方法在该项目里的test对象都可以调用,也就是public的意思,但是不同的项目如果也想呢。也就是framework开放出去。也很简单。把你想开放出去的接口文件扔这里,如果有人引用了你的framework,那么该文件就可以被他引用。需要注意的是,该文件里的所有接口都会被开放出去。

     

     

    隐藏接口

    隐藏接口有两种方式

    1.把你写的方法写在.m文件中。也就是不写方法的声明,这里面的方法就是外面不可调用的,也就是private的方法。但是同样的,工程内的其他类中的对象,也无法调用该接口

    2.和开放接口一样,把方法的声明写在.h文件,但是相关文件不放在public中。这样就是本工程/包内部可用,但是包外部不可用。

    隐藏和开发部分接口

    开发的时候经常会遇到一个问题,就是我有的类,包内和包外都是需要使用的,但是该类有的方法包内可用,包外有不可用。也就是实现一个public类中既有包外可见的方法,又要有仅包内可见的方法。那么所有声明放在.h中,放在public,就是不对的,因为不想可见的方法也会被可见。但不放public中,包外又不可见所有的方法了,如果方法不在.h中声明,包内该方法也不可见了。

    那么可以用扩展来完成该操作。也就是说,新创建一个文件

     

     注意,这里选extension,class选你需要扩展的类。需要注意的是,这里生成的新的文件,叫做:”类名+你起的file名",而不是单纯的“file名"

    这会生成一个新的类,该类的功能就是扩展你的头文件,也就是说,你的.m文件对应了两个.h文件。这两个.h文件对于点m是等价的。而且扩展中的所有方法,是需要再.m中实现的。

    这样的话,你原本的那个.h文件就可以放你希望公开的接口,然后放在public中。不想对包外公开,又想对包内公开的接口放在新生成的扩展文件中,再把文件放在private中,就实现某个类的部分接口可见。部分接口不可见。

    补充

    OC有一个关键字,叫 @package 这个其实就是一个包内可见,包外不可见的关键字,被@package 修饰的类成员变量,就可以实现上面的功能,需要注意的是,@package 只能修饰类成员变量,不可修饰属性和方法。

    用法如下

    1. @interface test : NSObject
    2. {
    3. @package NSString *log; //语法正确
    4. }
    5. @package @property(nonatomic,readonly) NSString *log; //语法错误
    6. @package
    7. -(void)test; //语法错误
    8. @end

     

    再补充一个

    有的属性,你希望对外只读,对类内是读写的。也就是说,该类.m内是可以修改改值的,其他的类生成的该类对象都是不可修改。可以这么实现

    1. //.h文件中
    2. @interface test : NSObject
    3. @property(nonatomic,readonly) NSString *log;
    4. @end
    5. //.m文件中
    6. @interface test()
    7. @property(nonatomic,readwrite) NSString *log;
    8. @end

    需要注意的是,变量名和类型要一致,不同的话就是两个不同的变量了。也就是说,@property()内的每个参数都可以修改,让类外和类内的同一个属性权限不一致

  • 相关阅读:
    P6698-[BalticOI 2020 Day2]病毒【AC自动机,dp,SPFA】
    防患未然 | AIRIOT城市管廊智能运维解决方案
    Spring的循环依赖
    目标检测YOLO实战应用案例100讲-面向辅助驾驶的道路目标检测(中)
    3DEXPERIENCE® DRAFTSIGHT® 新功能
    国标GB28181视频平台EasyGBS在Win系统服务运行中,配置文件写入失败该如何解决?
    土壤污染监测 环保数采仪应用
    大学生餐饮主题网页制作 美食网页设计模板 学生静态网页作业成品 dreamweaver美食甜品蛋糕HTML网站制作
    ChatGPT专业术语及有效使用方法概述
    脚手架安装
  • 原文地址:https://blog.csdn.net/qq_36924305/article/details/127772383