Objective c 是否在最新的Clang/LLVM中推断出所有权限定符?
所以,我错了,发现这两个都编译得很好:Objective c 是否在最新的Clang/LLVM中推断出所有权限定符?,objective-c,clang,llvm,Objective C,Clang,Llvm,所以,我错了,发现这两个都编译得很好: @property (nonatomic) UIButton* addButton; @property (nonatomic) CGRect keyboardRect; 您可能知道,默认的所有权限定符应该是strong,而且由于CGRect不能有该限定符,我猜它会被推断为不安全\u未恢复的。然而,我在铿锵文档中什么也没找到。这件事有记录吗?限定符强、弱和不安全_未恢复仅适用于ARC管理的对象(例如块、类型为id的对象等)。对于CGRect类型的属性,根
@property (nonatomic) UIButton* addButton;
@property (nonatomic) CGRect keyboardRect;
您可能知道,默认的所有权限定符应该是
strong
,而且由于CGRect
不能有该限定符,我猜它会被推断为不安全\u未恢复的
。然而,我在铿锵文档中什么也没找到。这件事有记录吗?限定符强
、弱
和不安全_未恢复
仅适用于ARC管理的对象(例如块、类型为id
的对象等)。对于CGRect
类型的属性,根本没有所有权限定符
以下是Clang文档中的参考:
有关所有权限定的部分仅适用于可保留的对象指针类型。非常有意义,感谢您花时间在文档中找到它(我找错了东西)。但是,您可以使用
\uuuuu unsafe\u unrepaired
限定非对象,这就是我没有在房间里看到大象的原因。我猜这是可能的,因为限定符什么都不做。这是不可取的。@valentiradu我想这是有道理的,你可以在任何东西上使用safety\u unretained
,因为它基本上告诉ARC不要用指针做任何事情。我同意这有点奇怪,我不会指望。是的,这有点道理,但完全是多余的。有趣的是,关于这件事,我一生都在撒谎:)。我开始在ARC之前用assign
声明非对象,然后用safe\u unrepaired
声明非对象。从来没有停下来想一想!问题是,我在很多臭名昭著的代码中看到了这一点。事实上,现在我正在AQGridView和iCarousel中查看它。我需要做一个“如果我告诉你怎么办”的记忆:)很好,再次感谢!