哪个是对的?这个:
NSArray* foo = [[NSArray alloc] initWithObjects:@"a", @"b", nil];
[bar performSelectorInBackground:@selector(baz:) withObject:foo];
- (void)baz:(NSArray*)foo {
...
[foo release];
}
Run Code Online (Sandbox Code Playgroud)
要么:
NSArray* foo = [[[NSArray alloc] initWithObjects:@"a", @"b", nil] autorelease];
[bar performSelectorInBackground:@selector(baz:) withObject:foo];
- (void)baz:(NSArray*)foo {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
...
[pool release];
}
Run Code Online (Sandbox Code Playgroud)
我知道第一个有效,但Clang抱怨它,所以我想知道是否有更好的模式可供使用.
我会"尝试"第二个,但是通过自动释放,谁知道缺少EXC_BAD_ACCESS
意味着你做得对,或者你刚刚幸运...