首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从@objc协议继承

从@objc协议继承
EN

Stack Overflow用户
提问于 2017-02-03 12:09:27
回答 1查看 286关注 0票数 3

我有这个协议继承

代码语言:javascript
复制
@objc protocol Base {}

protocol Some : Base {}

以及检查它的代码( main.swift )

代码语言:javascript
复制
import Foundation

class Model1 : NSObject {}

extension Model1 : Some {}


class Model2 : NSObject, Some {}


func test() {
    let m1: NSObject = Model1()
    let m2: NSObject = Model2()

    print("m1 is Some? \(m1 is Some)")
    print("m2 is Some? \(m2 is Some)")

    print("m1 is Base? \(m1 is Base)")
    print("m2 is Base? \(m2 is Base)")
}

test()

有趣的是,swiftcswift的输出不同

代码语言:javascript
复制
swiftc main.swift && ./main
m1 is Some? true
m2 is Some? true
m1 is Base? false
m2 is Base? false

vs

代码语言:javascript
复制
swift main.swift
m1 is Some? true
m2 is Some? true
m1 is Base? true
m2 is Base? false

但问题是为什么我不能把他们中的任何一个投给Base**?**

如果我将@objc添加到Some中,那么每个测试都将通过true。但我现在不能这么做,这是另一个SO (请看这里)的主题。

代码语言:javascript
复制
swiftc --version
Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
Target: x86_64-apple-macosx10.9
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-06 23:55:41

来自swift用户,似乎是一个已知的问题,有待解决:https://bugs.swift.org/browse/SR-1175

现在也被报道为https://bugs.swift.org/browse/SR-3882

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42023977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档