1

在 Xcode 8.3.2 和 Objective-C 中,如果你在一个类别中有一个类属性,它有时会导致一个警告。我怎样才能摆脱它?

警告是

ld: warning: Some object files have incompatible Objective-C category
definitions. Some category metadata may be lost. All files containing
Objective-C categories should be built using the same compiler.

类属性看起来像这样:

 @interface NSObject (Thingie)

 @property (class, readonly, strong) id thingie;

 @end

以及实施

@implementation NSObject (Thingie)

+ (id)thingie {
  return nil; // doesn't matter for this
}

@end
4

1 回答 1

0

我最近遇到了这个问题。当您使用较新版本的 Xcode(不确定版本截止值)并且您的项目定义了声明一个或多个类属性的 Objective-C 类别并且您还链接到使用 Xcode 版本构建的库时,就会发生这种情况不支持类属性。

通过将我的类属性转换为“getter”方法,我能够消除警告。

在您的情况下,将您的 .h 文件更新为:

@interface NSObject (Thingie)

+ (id)thingie;

@end

这涵盖了属性的classreadonly属性。并且strong属性在只读属性中本质上是多余的。

此转换对使用没有影响。你仍然可以这样做:

id aThingie = someObject.thingie;
于 2019-07-05T02:57:24.673 回答