以下のコードを使用してアークをテストし、ARC を理解するのに役立ちます
NSArray __strong* myArray = [NSArray arrayWithObjects:@"123", nil];
NSArray __weak* yourArray = myArray;
NSArray __unsafe_unretained* theirArray = yourArray;
myArray = nil;
NSLog(@"yourArray = %@, theirArray = %@", yourArray, theirArray);
私の理解では、ログは次のようになります: yourArray = (null), theirArray = (null) ログは次のとおりです: yourArray = ( 123 ), theirArray = ( 123 )
コードを変更して __unsafe_unretained を削除すると:
NSArray __strong* myArray = [NSArray arrayWithObjects:@"123", nil];
NSArray __weak* yourArray = myArray;
//NSArray __unsafe_unretained* theirArray = yourArray;
myArray = nil;
NSLog(@"yourArray = %@", yourArray);
ログは正しいです:yourArray = (null)
__unsafe_unretained ローカル変数を追加して NSArray オブジェクトを弱参照すると、NSArray オブジェクトを保持または強化するようになるのはなぜですか。
誰でも疑問に答えることができます。
よろしくお願いします