使用的子类NSThread可以实现更复杂的线程(例如,允许传递更多的参数或将所有相关的辅助方法封装在一个类中)。此外,该NSThread实例可以保存在属性或变量中,并可以查询其当前状态(是否仍在运行)。
本NSThread类支持的方法称为cancel可以从任何线程,那么将被称为cancelled属性YES的线程安全的方式。线程实现可以查询(和/或观察)该cancelled属性并退出其main方法。这可用于正常关闭工作线程。
// 创建一个新的NSThread子类 @interface MyThread : NSThread // 为需要从调用方传递到新值的值添加属性 //线。线程启动后,调用者不得修改这些内容,以避免 // 线程问题(或必须使用锁使属性成为线程安全的)。 @property NSInteger someProperty; @end @implementation MyThread - (void)main { @autoreleasepool { // 主线程方法在这里 NSLog(@"New thread. Some property: %ld", (long)self.someProperty); } } @end MyThread *thread = [[MyThread alloc] init]; thread.someProperty = 42; [thread start];