assign 可以修饰对象的,由于assign 修饰的对象不是强引用,在调用的时候会操作对象已经释放,也就是野指针,但是assign修饰的对象的属性当对象释放属性不会被设置为nil,如果是strong类型的当对象释放的时候属性就设置成nil
@interface AssignObj : NSObject
@property (nonatomic,assign,readwrite) NSInteger aga;//对象类型
@end
@implementation AssignObj
@end
@interface ViewController ()
@property (nonatomic,readwrite,assign) AssignObj* obj;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// xcode 提示警告, [AssignObj new] 创建对象,复制给你 assign 属性,由于assign 不是强引用,创建的对象立马释放
_obj = [AssignObj new];//
// _obj 是assign类型, 没有强引用对象 对象已经释放所有为空,此处会报错
_obj.aga = 9;
}
}