assign 可以修饰对象吗

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;

 }

}

 

你可能感兴趣的:(oc)