iOS Developer我不知道的事--iOSiOS之封装集成

iOS SDK开发(一)基础概念

2018-06-25  本文已影响62人  凌峰Mical

日常的开发中,我们经常会遇到这样的开发需求。比如 不能提供源码,暴露部分接口出去、 项目功能组件模块化等。这个时候,我们一般就想到了sdk开发。在OC的开发中,我们涉及到的一般是静态库(.a)或者动态库(.framework)。(注:不是所有的.framework就一定是动态库)

一、什么是库?

库是共享程序代码的方式,一般分为静态库和动态库。

二、静态库与动态库的区别?

静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。

注意:动态库只能苹果使用,如果项目中使用了动态库不允许上架(如:jspatch)

三、iOS里静态库形式?

.a和.framework

四、iOS里动态库形式?

.dylib和.framework

五、framework为什么既是静态库又是动态库?

系统的.framework是动态库,我们自己建立的.framework是静态库。

六、a与.framework有什么区别?

.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。
.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
.a + .h + sourceFile = .framework。
建议用.framework.

七、为什么要使用静态库?

1 方便共享代码,便于合理使用。
2 实现iOS程序的模块化。可以把固定的业务模块化成静态库。
3 和别人分享你的代码库,但不想让别人看到你代码的实现。
4 开发第三方sdk的需要。

八、制作静态库时的几点注意:
九、开发SDK经验:
  • 一 易用性
    1、尽量都支持cocoapods
    2、API调用简单
    3、便于调试
    4、API回调参数明确(推荐返回model而非dictionary)
    5、API稳定
  • 二 API设计
    1、 参数命名一定要明确无歧义
    2、SDK配置参数和接口入参分开
    3、SDK参数:拼接的字符串方便扩展
    4、用于查询的属性,绝对不能直接设置(SDK会提供一些方法和属性,让接入者知道SDK的当前状态。常见的比如- (BOOL)islogin;@property(nonatomic, assign, readonly) BOOL isLogin;。方法可以隐藏属性,保证不被修改,如果是属性,一定要加readonly)
  • 三注意事项
    能用系统的API解决的,就不要使用第三方,减少对其他库的依赖
    OC没有命名空间,类命名和类别方法加上前缀
    黑科技虽然好,但是能不用的就不要用
    多考虑第三方带来的影响,比如键盘处理,UIKit的UIAppearance等依赖其他SDK的,别打包在一起,不然出现符号表重复使用了OC类别打包的时候记得加上-ObjC
    能不用单例的就尽量少的使用
    核心代码的安全性
    资源文件使用bundle进行管理,能不用xib的就别用了吧
十、开发工具:

对于iOS来说,就是个Xcode,但是考虑成工程搭建和打包的方便建议使用cocoapods和cocoapods-packager

搭建开发工程:
pod lib create xxx
打包:
pod package xxx.spec

完美配合!

参考:
简书文章基本概念
SDK开发经验

上一篇下一篇

猜你喜欢

热点阅读