写在前面,本文并不详细描述具体如何创建.a文件, framework,以及如何使用workspace将SDK与测试项目关联方便 SDK单元测试。 因为下文提供的网络资源中都包含在内了。希望小伙伴们自行查阅。下文只讲述一个整体大致流程 和一些个人经验。文中提供的网站都很重要 其中也包含了一些相关的细节描述,这里就不做过多赘述了。跟着本文 相信一定可以搭建好自己的框架的。个人推荐使用framework
至于为什么,这里买个丸子。。。对 就是丸子。。。下面的资料中有讲到的。goodluck!
1.SDK的设计
这里推荐一本书中的部分内容《Effective Objective-C 2.0》第三章 接口与API设计,当然,本书的其他内容也很重要。下面附上思维导图
当然,书中的设计模式方面的内容貌似是没有的,或者说很少,对设计模式感兴趣的小伙伴 推荐看这位大神总结的设计模式方面的文章:
设计模式 http://blog.csdn.net/lovelion/article/details/17517213
还有 《Head First 设计模式》 也是很好的选择
2.SDK架构,大致如图
每个项目都会根据自己的需求来搭建项目框架,SDK也如此。具体情况具体分析。目的只是为了让项目更好维护
3.注意事项
1.尽量不要在SDK中使用分类[这样的话 开发者接入SDK时 可以少一步配置]
在SDK中不要使用分类,使用分类需要注意很多情况:例如分类实现的是类方法 还是对象方法, 在调用分类方法的时候 的外部方法体是类方法还是对象方法等。。。
如果SDK中有分类在生成静态库的时候貌似不会被加载进去[这个有待考证] 需要外接再次提供分类文件。。。
综上:暂时不要在SDK中使用分类方法 2017-08-31 PM
在制作framework或者lib的时候,如果使用了category, 把category打包成静态库是没有问题的,但是在用这个静态库的工程中,
调用category中的方法时会有找不到该方法的【运行时】错误(selector not recognized),
解决办法是:在使用静态库的工程中配置other linker flags的值为-ObjC
生成静态库 .a文件
1.生成