__weak NSBlockOperation *secondBlockOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"%@",secondBlockOperation);
NSLog(@"this is the second block");
}];
__block __weak NSBlockOperation *secondBlockOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"%@",secondBlockOperation);
NSLog(@"this is the second block");
}];
__block NSBlockOperation *secondBlockOperation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"%@",secondBlockOperation);
NSLog(@"this is the second block");
}];
这是我无法理解的代码。我发现__block会导致内存泄漏。所以__block __weak会进入我的脑海。OK,根本就没有泄漏。但是当我自定义一个类时像块这样强大的财产 __weak Person * one = nil; one = [[Person alloc] initWithBlock:^ { 的NSLog(@"%@"一种); }]; 弱分配警告显示。
老实说,当__block和__weak一起使用时,我不理解结果.__块值将是指向带有转发指针和值指针的结构的指针。因此,弱指针适用于指针到__block结构或__block结构中的指针。为什么__weak NSBlockOperation * secondBlockOperation没有警告??!
答案 0 :(得分:-1)
所有区块操作通常都应该很弱。因为,如果块操作完成,则不需要将此块对象保留在内存中。 正如苹果文档(https://developer.apple.com/library/ios/documentation/Cocoa/Reference/NSOperation_class/index.html#//apple_ref/occ/cl/NSOperation)中所写的那样: