在实现线程同步时调用dispatch_semaphore_wait出现崩溃,如图:
实现代码如下:
@interface DemoClass () //... @property (nonatomic) dispatch_semaphore_t initSem; //... @end @implementation DemoClass - (id)init { if (self = [super init]) { //... self.initSem = dispatch_semaphore_create(1); } return self; } - (void)start { __weak DemoClass *theDemo = self; dispatch_async(self.queue, ^{ dispatch_semaphore_wait(theDemo.initSem, DISPATCH_TIME_FOREVER); //... }); }
最后发现initSem这个属性名称导致崩溃,换了个属性名字后就正常了。怀疑这个属性名字与系统的命名有冲突导致了这种崩溃。还是少以init开头取名字为妙....
时间: 2024-10-23 21:57:29