Tag: 引用计数

dispatch_async复制内部块

鉴于以下(手动引用计数): void (^block)(void) = ^ { NSLog(@"wuttup"); } void (^async_block)(void) = ^ { block(); } dispatch_async(dispatch_get_main_queue(), async_block); 将“块”复制,而不是从堆叠中被摧毁?

ARC和autorelease

autorelease用于返回的函数对象,所以调用者不拥有所有权,被调用者将在未来释放对象。 然而,ARC可以计算调用者的所有权并在使用后释放它,也就是说,它可以像C ++中的智能指针一样行为。 使用ARC,它可以摆脱autorelease,因为autorelease是非确定性的。 我问这个问题的原因是,我看到ARC中的返回对象调用dealloc比非ARC代码。 这导致我认为,ARC可以像智能指针一样的行为,可以使autorelease无用。 这是真的还是可能的? 我可以考虑autorelease有用的唯一的事情是multithreading或networking代码,因为当对象传递时可能不容易计算所有权。 谢谢你的想法。 这里是新的编辑,使事情清楚: 与autorelease + (MyClass*) myClass { return [[[MyCClass alloc] init] autorelease]; } – doSomething { MyClass *obj = [MyClass myClass]; } 用ARC: + (MyClass*) myClass { return [[MyCClass alloc] init]; // no autorelease } – doSomething { MyClass *obj = [MyClass myClass]; // insert [obj release] […]