一、《如何打造一个让人愉快的框架》
1、目前swift只支持framework不支持静态库(.a)。
2、如果要让cocoapods支持swift需要把use_framework;cocoa pods是入侵式包管理工具,会更改工程的结构。
3、carthage动态库管理工具,仅支持framework,非入侵式,不更改项目文件,去中心化,直接从git拉取。
4、swift package manager。
5、创建框架的tips:(1)框架对于app的区别主要重点是在api的设计。(2)提供较少的接口来完成任务。(3)命名的重要性。(4)测试驱动开发。(5)减少命名冲突,添加前缀。
6、版本号x(major).y(minor).z(patch):(1)major:公共api改动或者删除。(2)minor:新添加api。(3)patch:bug修复。
7、持续集成,选择合适的CI,比如:TRAVIS CI,CIRCLE CI,COVERALLS,CODECOV.
8、自动化发布流程:FASTLANE。强烈推荐学习AFNETWORKING/FASTLANE.
9、优秀的框架包含的特点:文档、注释、完善的测试保证、代码质量、更新日志、issue响应速度。
10、检测代码质量如何的工具:COCOAPOD QUALITY(给开源项目打分)。
11、可能的问题:(1)兼容性问题(新老版本数据持久化的兼容)(2)重复包含的问题。在框架开发的时候一定要将EMBEDDED_CONTENT_CONTAINS_SWIFT设置为NO;不要手动将依赖的framework拷贝到你的项目中,应该使用cocoapods、carthage这样的工具来管理。(3)swift更新后,用老的swift编译的framework失效。
二、《越过OC与Swift间的鸿沟》
1、swift是一门静态的强类型的语言。
2、swift中尽量不使用继承。应该尽量使用protocol、(Generic)泛型、struct、extension、enum来达到目的。
3、没有swizzle了。
4、不使用继承的理由:(1)组合往往优于继承。(2)类是生成的对象是引用类型的,不便于代码的维护。(3)Mutable、Thread hells、locks。。。。。(4)静态的强类型语言下会产生大量的Type Casting,会导致:a、失去编译器对类型安全的保护。b、与OC不同的是Type Casting在Runtime消耗大量的性能。c、大量的代码冗余。