我写了这段代码:
NSAlert *alert = [NSAlert new];
objc_setAssociatedObject(alert, @"block", aBlock, OBJC_ASSOCIATION_COPY_NONATOMIC);
if (![objc_getAssociatedObject(alert, @"block") isEqual:aBlock]) NSLog(@"failure");
whereaBlock
是void (^)(NSAlert *)
传递给调用上述代码的函数的块。现在:如果块不包含任何外部__block
变量,一切正常,但如果它试图设置一个这样的变量(例如,一个 external __block NSString *string
)我得到@"failure"
消息。我能做些什么?