前言
如果在开发iOS项目中使用过cocoapods,那么你肯定接触过一些知名的三方框架,比如AFNetworking、SDWebImage。其中的源码自不必说,你肯定或多或少的了解过维护这些基础库的开发者是如何发布这些框架的。如果你对如何发布一个框架到cocoapods还不是非常了解,那么本篇文章将值得一读!
如果在开发iOS项目中使用过cocoapods,那么你肯定接触过一些知名的三方框架,比如AFNetworking、SDWebImage。其中的源码自不必说,你肯定或多或少的了解过维护这些基础库的开发者是如何发布这些框架的。如果你对如何发布一个框架到cocoapods还不是非常了解,那么本篇文章将值得一读!
CocoaPods是用ruby实现的,因此Podfile文件的语法就是ruby的语法。
podfile是一个说明文件,用以描述管理一个或者多个Xcode project的target的依赖库。这个文件应该且必须被命名为Podfile
。
Podfile可以非常简单,下面的例子增加了Alamofire依赖库到单个target:
1 | target 'MyApp' do |
CocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,供我们开发使用。这么说可能还不是很理解,当我们开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,A依赖B,B又依赖C……。总之笔者的意思,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本依赖库,然后一个个重新加入到项目中,费时费力,操作繁琐且容易出错。如果能有什么工具能代替我们手工去解决这些依赖和更新问题,那我们开发效率将如有神助。这就是CocoaPods的作用。
总而言之,使用CocoaPods的目的是让我们能自动化的、集中的、直观的管理第三方开源库。
所谓启动传参,是指在APP启动的时候,从Xcode环境变量或者命令行传入指定的参数,让APP根据不同参数做出不同的响应。
在UI自动化测试中,需要很多前置的工作,包括替换域名、指定mock/代理服务器地址、关闭长连接、启动后跳转到指定页面、自动登录、设置经纬度等等。这些前置工作都可以通过启动传参来实现。使用启动传参,有利于提高测试效率。
NSUserDefaults作为iOS內建的存储机制早已为大家所熟知。NSUserDefaults在少量数据持久化和用户偏好存储方面一直发挥着重大的作用。对于NSUserDefaults的常见用法应该是无外乎存取数据。相比较NSUserDefaults,Xcode中的环境变量就比较陌生。有时候,从头到尾开发一款APP也不一定会用到环境变量。而实际上NSUserDefaults和环境变量存在着千丝万缕的关系。本篇文章将会揭开二者的内在联系。
NSUserDefaults的常见用法,如下:
1 | [[NSUserDefaults standardUserDefaults] setObject:@(1) forKey:@"isVip"]; |
[toc]
按照时间顺序,事件的生命周期是这样的:
事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的view、寻找最合适的view的底层实现、拦截事件的处理)->找到最合适的view后事件的处理(touches方法的重写,也就是事件的响应)
其中重点和难点是:
1.如何寻找最合适的view
2.寻找最合适的view的底层实现(hitTest:withEvent:底层实现)
iOS中的事件可以分为3大类型: