草庐IT

autoreleasing

全部标签

ios - 为什么仅在第一次返回 __strong 和 __autoreleasing 变量后才会产生不同的对象生命周期?

考虑这段代码:@implementationMyClass-(void)dealloc{NSLog(@"MyClassdealloc:%@",self);}@end@implementationAppDelegate__weakstaticMyClass*weakShared=nil;-(MyClass*)getMyClass{MyClass*tmpHolder=[[MyClassalloc]init];//PREPEND"__autoreleasing"weakShared=tmpHolder;returnweakShared;//ATTENTIONTOTHISLINE}-(void

ios - 是否需要在GCD中的ARC下创建一个autorelease pool?

我有一个CAEAGLLayer的运行循环方法,它使用GCD来序列化对共享ivar的访问。我目前的绘图代码是这样构造的:-(void)draw{dispatch_sync(serialDrawingQueue,^{@autoreleasepool{[selfdrawingStart];[spriteAdraw];[spriteBdraw];[selfdrawingEnd];}});}draw方法由CADisplayLink调用。当我使用GCDblock时,@autoreleasepool是否必需? 最佳答案 来自Appledocs:I

iphone - ARC 中的 '[[something retain] autorelease]' 是什么?

ARC中[[somethingretain]autorelease]的等价物是什么?我遇到一个问题,类DBRequest调用我的委托(delegate)来表示完成。然后,我的代表将DBRequest实例设置为nil,这是dealloc。但是当堆栈从我的委托(delegate)中弹出并跳回DBRequest时,它当然会崩溃。如果我不在ARC中,在我的委托(delegate)中我会简单地执行[[theDbRequestretain]autorelease]然后释放我对它的引用,这样它就可以存活足够长的时间直到下一个运行循环自动释放它。我应该在ARC中做什么? 最

objective-c - 在什么情况下,我们需要在 ARC 下编写 __autoreleasing 所有权限定符?

我正在尝试完成这个谜题。__strong是所有Objective-C可保留对象指针(如NSObject、NSString等)的默认值。它是一个强引用。ARC在作用域末尾用-release平衡它。__unsafe_unretained等于旧方法。用于不保留可保留对象的弱指针。__weak与__unsafe_unretained类似,只是它是一个自动归零的弱引用,这意味着一旦引用的对象被释放,指针就会被设置为nil。这消除了悬空指针和EXC_BAD_ACCESS错误的危险。但是__autoreleasing到底有什么用呢?我很难找到关于何时需要使用此限定符的实际示例。我相信它仅适用于需要指

objective-c - NSError 和 __autoreleasing

有人可以向我解释在以下示例代码块中使用__autoreleasing的目的吗?-(void)execute:(NSError*__autoreleasing*)error{//dostuff,possiblyassigningerrorifsomethingwentwrong}我删除了__autoreleasing并且一切似乎仍然可以正常编译/运行。我开始使用obj-cpostARC,所以我从来没有真正学习/理解所有那些双下划线thingamajigs。我读过ARCtransitionguide,但我不完全理解他们的NSError示例。 最佳答案

objective-c - NSError 和 __autoreleasing

有人可以向我解释在以下示例代码块中使用__autoreleasing的目的吗?-(void)execute:(NSError*__autoreleasing*)error{//dostuff,possiblyassigningerrorifsomethingwentwrong}我删除了__autoreleasing并且一切似乎仍然可以正常编译/运行。我开始使用obj-cpostARC,所以我从来没有真正学习/理解所有那些双下划线thingamajigs。我读过ARCtransitionguide,但我不完全理解他们的NSError示例。 最佳答案

objective-c - 使用 ARC,有什么更好的 : alloc or autorelease initializers?

使用alloc或autorelease初始化程序是否更好(更快、更高效)。例如:-(NSString*)hello:(NSString*)name{return[[NSStringalloc]initWithFormat:@"Hello,%@",name];}或-(NSString*)hello:(NSString*)name{return[NSStringstringWithFormat:@"Hello,%@",name];//return[@"Hello,"stringByAppendingString:name];//evensimpler}我知道在大多数情况下,这里的性能应该无

objective-c - 使用 ARC,有什么更好的 : alloc or autorelease initializers?

使用alloc或autorelease初始化程序是否更好(更快、更高效)。例如:-(NSString*)hello:(NSString*)name{return[[NSStringalloc]initWithFormat:@"Hello,%@",name];}或-(NSString*)hello:(NSString*)name{return[NSStringstringWithFormat:@"Hello,%@",name];//return[@"Hello,"stringByAppendingString:name];//evensimpler}我知道在大多数情况下,这里的性能应该无