我最近转移到了 ARC,并且在将 self 对象传递给块时为它设置正确的属性值有点困惑。
据我了解,任何用_weak声明的属性都不应在 dealloc 方法中设置为 nil 。传递给块的 self 对象应声明为_weak而不是__block。
请让我知道这种理解是否正确,并且我在以下实现中以正确的方式进行操作。
(void)myApplication {
self.data = [NSMutableDictionary dictionary];
__weak MyViewController *aBlockSelf = self;
[self.data setValue:[MyAction customActionWithBlock:^(MyAction *iAction, NSString *iIdentifier) {
AnotherViewController *aController = [[AnotherViewController alloc] initWithType:@"aType"];
aController.hasSearch = NO;
aController.delegate = aBlockSelf;
aController.showInventoryImage = YES;
[aBlockSelf presentNavigationalModalViewController: aController];
}] forKey:@"aKey"];
}