我使用下面的代码来测试弧并帮助理解弧
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 对象。
任何人都可以帮助回答这个疑问。
最好的祝福