使用Objective-C或其他适用的语言?
我想我真正要问的是,__weak
和const
在分类方面是一样的吗?在谈论__weak
,const
等时,我可以互换术语类型和生命周期限定符吗?
答案 0 :(得分:5)
在C中,类型限定符将质量(属性,属性)附加到给定类型。有三种类型限定符:const
(只读,无写入),volatile
(无缓存)和restrict
(无别名)。
自动引用计数(针对Objective-C)添加了四个新类型限定符:__autoreleasing
,__strong
,__unsafe_unretained
和__weak
。由于ARC的性质 - 即自动化内存管理 - 这四种类型限定符附加了与所有权相关的属性。
我想我真正要问的是,
__weak
和const
在分类方面是否相同?
它们都是类型限定符,但只有__weak
是所有权限定符。
在谈论
__weak
,const
等时,我可以互换术语类型和生命周期限定符吗?
不,他们不可互换。上面列出的所有限定符都是类型限定符,但只有ARC引入的四个限定符是还所有权限定符。
请注意,the LLVM project使用面额所有权限定符,而Apple似乎使用终身限定符。
答案 1 :(得分:0)
const指定对象在其生命周期内无法更改。
__ weak意味着对象引用不会增加引用计数,当您使用ARC时,这对于您不拥有或不想增加引用计数的对象(例如循环引用计数)非常有用。 strong将是默认值并暗示引用计数更改。