Objective c ';objc#U所有权';不支持属性参数:';分配';

Objective c ';objc#U所有权';不支持属性参数:';分配';,objective-c,automatic-ref-counting,Objective C,Automatic Ref Counting,在Xcode中,在启用ARC的项目中,任何创建指向任何对象的弱指针的尝试都会生成以下警告: _不支持“objc_所有权”属性参数:“分配”_ 测试表明,受影响的变量被视为“强” 这个警告代表什么?如何解决根本问题 注意:我知道大多数人在ObjC中声明弱指针时都使用了一个前导的存储限定符。就本问题而言,请假设NSObject*\uuu弱foo或\uu弱NSObject*foo将生成警告。为什么不这样做: __weak typeof(self) weakSelf = self; 为什么不这样做

在Xcode中,在启用ARC的项目中,任何创建指向任何对象的弱指针的尝试都会生成以下警告:

_不支持“objc_所有权”属性参数:“分配”_

测试表明,受影响的变量被视为“强”

这个警告代表什么?如何解决根本问题

注意:我知道大多数人在ObjC中声明弱指针时都使用了一个前导的存储限定符。就本问题而言,请假设NSObject*\uuu弱foo或\uu弱NSObject*foo将生成警告。

为什么不这样做:

__weak typeof(self) weakSelf = self;
为什么不这样做:

__weak typeof(self) weakSelf = self;

显示的代码看起来不错。代码中的其他地方可能有问题

我猜是有人在其中一个头文件中写的,其中包括:

#define weak assign
这就产生了:

% cat test.m
#define weak assign
id __weak x;
% clang -fobjc-arc test.m
test.m:2:4: warning: 'objc_ownership' attribute argument not supported: 'assign'
      [-Wignored-attributes]

显示的代码看起来不错。代码中的其他地方可能有问题

我猜是有人在其中一个头文件中写的,其中包括:

#define weak assign
这就产生了:

% cat test.m
#define weak assign
id __weak x;
% clang -fobjc-arc test.m
test.m:2:4: warning: 'objc_ownership' attribute argument not supported: 'assign'
      [-Wignored-attributes]

这没有什么区别:警告仍然存在。
Type*\u-weak
实际上是正确的语法。编译器将允许您使用
\uuuu弱类型*
,因为每个人都在使用“错误”的语法。这没有什么区别:警告仍然存在。
类型*\uuu弱
实际上是正确的语法。编译器将允许您使用
\uu弱类型*
,因为每个人都在使用“错误”的语法。您的
LBXLibraryRootViewController的继承层次结构是什么?您能否确认
self
LBXLibraryRootViewController*
?LBXLibraryRootViewController继承自UIViewController。我可以确认self是LBXLibraryRootViewController。您的
LBXLibraryRootViewController
的继承层次结构是什么?您能否确认
self
LBXLibraryRootViewController*
?LBXLibraryRootViewController继承自UIViewController。我可以确认self是LBXLibraryRootViewController。这是正确答案。谢谢你,格雷格。如果你去过伯克利,我请客。这是正确的答案。谢谢你,格雷格。如果你在伯克利,啤酒就由我来付。