__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(@"%@",one); }]; 弱い割り当て警告が表示されました。
正直、__block と __weak を併用した場合の結果がよくわかりません。__block の値は、フォワーディング ポインタと値のポインタを含む構造体へのポインタになります。そのため、__block 構造体へのポインタに対して、weak が機能するか、 __block構造体のポインターと、なぜ__weak NSBlockOperation *secondBlockOperationに警告がないのですか??!