前言:Xcode9之前使用Xcode Server 步骤比较繁琐,还需要单独的macOS Server app,Xcode9之后preferences新增了Server & Bots 选项, 将Xcode Server内置在了Xcode中。
下面将介绍在Xcode9中如何设置和使用Xcode Server。
开启Server & Bots
选择设置Xcode Server的用户,我选择的是自己,也可以选择其他用户。
Grand Central Dispatch (GCD) 是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的Disptach Queue中,GCD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可统一管理,也可执行任务,这样就比以前的线程更有效率。
GCD用我们难以置信的非常简洁的记述方法,实现了极为复杂繁琐的多线程编程。下面列出几点关于GCD使用的高效方法。
单例模式大家都不陌生,常见的实现方式为:在类中编写名为sharedInstance的类方法,该方法只会返回全类共用的单例实例,而不会每次调用时都创建新的实例。例如:
1
2
3
4
5
6
7
8
9+(void)sharedInstance{
static DemoClass *sharedInstance = nil;
@synchronized(self){
if(!sharedInstance){
sharedInstance = [[self alloc]init];
}
}
return sharedInstance;
}
官方文档详细的介绍了ListView的使用方式。
在这里我简单的进行了实践,拉取网络数据进行显示,触底自动加载更多。代码非常简洁清晰,这里直接贴出来O(∩_∩)O~。
我们要知道在Objective-C中,如果像某对象传递消息,那就会使用动态绑定机制来决定需要调用的方法。在底层,所有方法都是普通的C语言函数,然而对象收到消息之后,究竟该调用哪个方法则完全于运行期决定,甚至可以在程序运行时改变(最常见的运用场景就是Method Swizzle
黑魔法),这些特性使得Objective-C成为一门真正的动态语言。
给对象发送消息:1
id returnValue = objc_msgSend(someObject,@selector(messageName:),parameter);
objc_msgSend方法会在接收者所属的类中搜寻其”方法列表 list of methods (可通过class_copyMethodList(objClass,&count)
方法获取对象所有方法列表) “,如果能找到与选择子(也就是messageName)名称相符的方法就跳转至其实现代码。若找不到则沿着继承体系向上查找,找到方法再跳转( note :找到后,objc_msgSend会将匹配的结果缓存在快速映射表(fast map)
里面,每个类都有这样一块缓存,若是稍后还向该类发送与选择子相同的消息,那么执行就很快。当然还是稍微不如静态绑定的函数调用快,不过消息派发机制并不会成为应用程序的瓶颈啦!),
如果最终还是找不到相符的方法,那就执行消息转发(message forwarding)
操作。消息转发分为两大阶段,动态方法解析阶段
和完整的消息转发阶段
。
本文将用例子来演示第一阶段的运用。
接触JSPatch也快一年,在此总结归纳一些新接触的开发者容易碰到的一些问题。其实很多问题bang哥在wiki中已经写的很详细了,建议花点时间仔细看看下面这两个WiKi内容。
想要了解JSPatch实现原理可以先看 JSPatch 实现原理详解
只需要一对' '
, 多个类之间用逗号 ,
分隔:1
require('UIView, UIColor')
_
需要特别注意因为JSPatch是通过_
来分割方法参数的,所以遇到方法本身带有_
的时候需要使用__
双下划线代替,否则会被识别成一个参数,导致出现类似如下的报错。