Target方式还是Project方式?
Target方式和调用者结合得更紧密,使用起来更方便。同时与简单的文件夹相比,隔离度更好。
Project的方式耦合度更低,但是开发的时候需要一个调用者,使用上相对麻烦一点。
调试的时候可以用Target方式;正式使用的时候应该用Project
鼓励采用Project方式,同一项目中的话可以和调整者放在同一个workspace中
资源文件需要单独放在.bundle文件中吗?
不需要。资源文件可以直接放在framework中,并且文件的组织方式和普通的工程一样,按照功能分模块就好了。
读取framework中的资源需要用到bundle参数
+ (NSBundle *)bundleForClass:(Class)aClass;
对外接口
对外接口统一到一个文件中,名字为XXXManager,XXX为framework的名字,让人一看就明白
这个接口文件可以做成一个单例,让调用者使用方便
这个接口文件的单例不要做具体的工作,只是一个“调度者”
这个接口文件放在framework的根目录下,或者放在一个名为“Interface”的文件夹下,让人一看就明白
这个“Interface”文件下放接口的协议、数据结构定义等,同样不要放实现文件
文件夹分类标准
按照功能分类,不要按照类别分类。比如工具类可以叫“Tool”或者“Utility”,不要叫“Category”
分类标准有且只有一个:按照功能分类
不要分层。如果要分层,应该拆成两个framewor
代码管理
有条件的用git进行代码管理
库管理工具用Carthage,当然CocoaPods也很好用,选择看个人喜好
用git的话,可以将自己写的framework也纳入Carthage的管理,将自己写得库也当做第三方库,增强隔离性和复用方便性。