我很惊讶地发现以下行为......块保留命名约定的循环?
@interface Foo : NSObject
- (void)addBar:(id)aBar withCompletion:(void(^)(void))completion;
@end
@interface AwesomeClass : NSObject
@property (strong, nonatomic) Foo *foo;
- (void)doSomethingWithBar:(id)bar;
@end
@implementation AwesomeClass
- (void)doSomethingWithBar:(id)bar
{
[self.foo addBar:bar withCompletion:^{
NSLog(@"%@", self.foo);
}];
}
在Xcode中4.6.1我得到的-doSomethingWithBar:
的实现,“捕获‘自我’强烈该块很可能会导致一个警告保留周期“。
但是,如果我重构方法-addBar:withCompletion:
的名到-setupBar:withCompletion:
此警告消失。这似乎令我惊讶,说明我在Objective-C命名约定方面的知识存在差距!
尝试重新编译。警告不会“消失”,就像Xcode是愚蠢的,并刷新LLVM最后一次产生的警告 – CodaFi 2013-03-20 22:42:45