id obj = [NSArray array]; // 取得非自己生成并持有的对象 [obj retain];
释放方式:
1、赋其他值 2、超出作用域
所有权修饰符
_ _strong id类型和对象类型默认在超出变量作用域后被释放_ _weak
解决循环引用问题(易发生互相强引用)当引用计数为0时,自动赋值nil必须是oc对象(assign可以非oc对象)weak被赋以一个非自己生成的对象,weak并不会立即释放,而是注册到AutoreleasePool中,延长生命周期。不持有对象⚠️与assign的区别 assign是指针赋值,不对引用计数操作,使用之后如果没有置为nil,可能产生野指针。而weak一旦不适用,自动赋值nil。_ _ unsafe_unretained
_ _autoreleasingself.proprety = [[NSObject alloc] init]; //init的时候retainCount+1 , 赋值的时候retainCount+1,但autoreleasepool只减1
新闻热点
疑难解答