- (void)viewDidLoad {
[super viewDidLoad];
dispatch_queue_t queue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_CONCURRENT);
for (int i = 0; i < 10000; i++) {
dispatch_async(queue, ^{
self.str = [NSString stringWithFormat:@"asgdhjagsjhd"];
});
}
}
每次运行此代码时,它都会崩溃,任何人都可以告诉我原因吗?
答案 0 :(得分:1)
如果您将 self.str 与非原子属性一起使用, 然后它将被所有线程访问和修改, 我检查了上面的代码,这是崩溃的原因是一个线程释放对象,而其他线程试图访问它, 因为发布该对象崩溃了。 如果您想使用线程安全,请输入 self.str 的原子属性。