在objective-c或其他任何适用的语言中?
我想我真正想问的是,__weak
和const
在分类上是不是相同的?当我谈论__weak
,const
等时,我可以交换术语类型和生存期限定符吗?
最佳答案
在C语言中,类型限定符将质量(属性、属性)附加到给定的类型。有三种类型限定符:const
(只读,无写)、volatile
(无缓存)和restrict
(无别名)。
自动引用计数(对于objective-c)添加了四个新类型限定符:__autoreleasing
、__strong
、__unsafe_unretained
和__weak
。由于ARC的性质,即自动化内存管理——这四种类型限定符附加了与所有权相关的属性。
我想问的是,在分类方面,__weak
和const
是否相同?
它们都是类型限定符,但只有__weak
是所有权限定符。
当我谈论__weak
,const
等时,我可以交换术语类型和生存期限定符吗?
不,它们不能互换。上面列出的所有限定符都是类型限定符,但只有arc引入的四个限定符也是所有权限定符。
注意,AA>使用面额所有权限定符,而the LLVM project似乎使用终身限定符代替。