iOS 开发, 使用Objective-C, 属性前面用assign 和 weak 修饰。
使用assign修饰对象,会导致野指针。因为assign修饰的对象销毁后,refence 没有置为nil.
我同事写了很多这样的代码,为什么App运行好好的,从来没有Crash?
@interface ZBStoreInfoVC : UIViewController
@property (nonatomic,assign) id<ZBStoreInfoVCDelegate> delegate;
@end
id<Delegate> delegate
一般赋给另外一个UIViewController,
是对象。不是值类型
1.这么写肯定是会不对的,会崩溃。稍微写个小测试,确实会奔溃。
2.为什么没出现奔溃?可能是delegate很少优先于self释放,可能delegate因为其他原因没释放(单例或者引用循环等)。一般来说被委托者应该在更深的层级,会先释放,比如界面A->B->C,这样情况,肯定是C作为B的委托,C会先于B释放。这个问题你逐个的检查一下为什么没有奔溃。主要看:是否delegate释放了还回去调用self.delegate之类的。