首先,使用ARC(自动引用计数)解释了“无效”引用的问题,就像这个例子:
NSDate* date1=[[NSDate alloc]init];
NSDate* date2=date1;
[date1 release];
NSLog(@"%@",date2); // bad access
所以我已经理解了保留/释放机制:在这种情况下,指令将是:
date2=[date1 retain];
但当涉及到强引用/弱引用时,对我来说听起来像个矛盾:
“默认情况下,引用是强引用。如果您将对象分配给一个强引用,ARC会认为您希望该对象保留并隐式地保留它”
这不是与之前所说的相矛盾吗?date2默认是强引用,因此它应该隐式地保留date1,不应该出现访问异常。
当然,我可能误解了一些内容,有人可以更好地向我解释吗?