- Accessing Run Loops and Modes
- Managing Timers
- Managing Ports
- Running a Loop
- Scheduling and Canceling Messages
NSRunLoop是一种更加高明的消息处理模式,他就高明在对消息处理过程进行了更好的抽象和封装,这样才能是的你不用处理一些很琐碎很低层次的具体消息的处理,在NSRunLoop中每一个消息就被打包在input source或者是timer source中了。
如图所示,将消息放到循环中,保证每个消息在循环的过程中都能执行。
1 Accessing Run Loops and Modes
/// 当前runloop
public class func currentRunLoop() -> NSRunLoop
/// 主runloop
@available(iOS 2.0, *)
public class func mainRunLoop() -> NSRunLoop
/// 当前runlooop运行模式
public var currentMode: String? { get }
/// 获取底层CFRunLoop
public func getCFRunLoop() -> CFRunLoop
/// 根据执行模式返回下一次执行时间
public func limitDateForMode(mode: String) -> NSDate?
2 Managing Timers
/// 添加NSTimer到指定的模式
public func addTimer(timer: NSTimer, forMode mode: String)
3 Managing Ports
/// 添加一个NSPort到指定的模式
public func addPort(aPort: NSPort, forMode mode: String)
/// 移除NSPort
public func removePort(aPort: NSPort, forMode mode: String)
4 Running a Loop
/// 运行
public func run()
/// 在什么时间节点前运行
public func runUntilDate(limitDate: NSDate)
/// 在指定的时间前指定的模式中运行
public func runMode(mode: String, beforeDate limitDate: NSDate) -> Bool
/// 在指定的时间前指定的模式中循环运行一次
public func acceptInputForMode(mode: String, beforeDate limitDate: NSDate)
5 Scheduling and Canceling Messages
/// 添加消息任务
///
/// - parameter aSelector : Selector
/// - parameter target : 目标类
/// - parameter arg : 携带数据
/// - parameter order : 优先级
/// - parameter modes : 执行模式
///
/// - returns: void
public func performSelector(aSelector: Selector, target: AnyObject, argument arg: AnyObject?, order: Int, modes: [String])
/// 取消消息任务
public func cancelPerformSelector(aSelector: Selector, target: AnyObject, argument arg: AnyObject?)
/// 取消发送给目标的消息
public func cancelPerformSelectorsWithTarget(target: AnyObject)
Appendix
Sample Code
Related Documentation
Revision History
时间 | 描述 |
---|---|
2016-03-09 | 博文完成 |