【发布时间】:2015-06-02 14:52:05
【问题描述】:
我看到了一个有趣的案例 Estimote nearables SDK
他们有一个类ESTNearable,其属性名为zone。
// ENUM
typedef NS_ENUM(NSInteger, ESTNearableZone ) {
ESTNearableZoneUnknown = 0,
ESTNearableZoneImmediate,
ESTNearableZoneNear,
ESTNearableZoneFar,
};
// CLASS
@interface ESTNearable : NSObject <NSCopying, NSCoding>
// ...
@property (nonatomic, assign, readonly) ESTNearableZone zone;
// ...
@end
因此,当我尝试在 Swift 中使用此方法时,编译器会出现以下错误:
据我所知,存在某种编译器错误,出于某种原因,它认为我想使用 NSObject - (struct _NSZone *)zone OBJC_ARC_UNAVAILABLE; 中的旧 zone 方法,我可以毫无问题地使用该类的其他特定属性。
由于我使用 SDK,我无法更改 zone 方法的名称。我相信我可以编写某种 obj-c 类别,在那里添加一些新方法,它将返回原始值的值,但我不想在我的项目中添加 obj-c 类。
是否有可能从 swift 调用此方法,因为我相信将为类实例调用正确的 zone 方法?
提前致谢!
【问题讨论】:
-
是否会单独使用
-fno-objc-arc为该文件关闭 ARC 作为编译标志? -
感谢您的建议,但我认为不允许为 swift 文件禁用 ARC
-
如果您将 zone 指定为 ESTNearableZone 而不是让编译器决定,这可能有助于编译器选择要使用的正确 zone 方法。
-
我试过了,没用。
标签: ios objective-c swift automatic-ref-counting