Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用getter的Objective-C协议上的Swift 1.2错误_Objective C_Swift_Protocols - Fatal编程技术网

使用getter的Objective-C协议上的Swift 1.2错误

使用getter的Objective-C协议上的Swift 1.2错误,objective-c,swift,protocols,Objective C,Swift,Protocols,此Objective-C协议过去在Swift 1.1中工作,但现在在Swift 1.2中出现错误 目标C协议被剥离为一个问题属性: @protocol ISomePlugin <NSObject> @property (readonly, getter=getObjects) NSArray * objects; @end class SomePlugin: NSObject, ISomePlugin { var objects: [AnyObject]! = nil

此Objective-C协议过去在Swift 1.1中工作,但现在在Swift 1.2中出现错误

目标C协议被剥离为一个问题属性:

@protocol ISomePlugin <NSObject>
@property (readonly, getter=getObjects) NSArray * objects;
@end


class SomePlugin: NSObject, ISomePlugin {
    var objects: [AnyObject]! = nil
    func getObjects() -> [AnyObject]! {
        objects = ["Hello", "World"];
        return objects;
    }
}
如果我将协议(因为它来自第三方,所以我不能真正这样做)更改为以下内容,那么代码可以很好地编译

// Plugin workaround
@protocol ISomePlugin <NSObject>
@property (readonly) NSArray * objects;
- (NSArray *) getObjects;
@end
//插件解决方法
@协议插件
@属性(只读)NSArray*对象;
-(NSArray*)获取对象;
@结束
提前感谢。

您可以实施

@property (readonly, getter=getObjects) NSArray * objects;
作为具有
@objc
属性的只读计算属性 指定Objective-C名称。 如果您需要一个存储属性作为后备存储 然后你必须单独定义它。 例如:

class SomePlugin: NSObject, ISomePlugin {

    private var _objects: [AnyObject]! = nil

    var objects: [AnyObject]!  {
        @objc(getObjects) get {
            _objects = ["Hello", "World"];
            return _objects;
        }
    }
}