Objective-C编程中为了处理对象,可将变量类型定义为id类型或各种对象类型。
所谓对象类型就是指向NSObject这样的Objective-C类的指针,例如NSObject *
。id类型用于隐藏对象的类名部分,相当于C语言中常用的void *
。
ARC有效时,id类型和对象类型同C语言其他类型不同,其类型上必须附加所有权修饰符。
所有权修饰符一共有4种:
__strong
修饰符__weak
修饰符__unsafe_unretained
修饰符__autoreleasing
修饰符
一、__strong修饰符
__strong
修饰符是id类型和对象类型默认的所有权修饰符。即代码中id变量,实际上被附加了所有权修饰符。
__strong
修饰符表示对对象的“强引用”。持有强引用的变量在超出其作用域时被废弃,随着强引用的失效,引用的对象会随之释放。
注:附有__strong
修饰符的变量之前可以相互赋值。