Skip to content

@objc has been deprecated in favour of inheriting from NSObject #37

@ghost

Description

具体的讨论在这里:https://forums.developer.apple.com/thread/11867
查了下最新的官方文档,貌似还没有更新。

Activity

looping

looping commented on Aug 26, 2015

@looping

这个问题应该是修复Xcode6的一个鲜为人知的bug引出的,文档为什么没更新,我想很有可能是目前的解决方案不是最优的。

比如在Xcode7 beta4以前,将@objc(ClassName)用在类SwiftClass上,在Xcode中使用Objective-C调用时,无法使用ClassName,只能使用SwiftClass,但运行时显示的类名又是ClassName
具体可以参考下:http://scottberrevoets.com/2015/07/23/at-objc-class-prefixes-fixed-in-xcode-7-beta-4/

虽然在b4中修复了这个问题,但是使用非ASCII字符命名的Swift类使用@objc(ClassName)后,编译会报如下错误:

Parameter of 'swift_name' attribute must be an ASCII identifier string

还没用Xcode7 beta6测过这个问题。

onevcat

onevcat commented on Aug 26, 2015

@onevcat
Member

Thanks。我会查证一下相关内容,然后做一些必要的修改。谢谢!

onevcat

onevcat commented on Sep 17, 2015

@onevcat
Member

应该是 Xcode 7 的一个退化。为了解决上面说的问题,Swift 2 中 Apple 引入了 SWIFT_CLASS_NAMED 宏来对 Swift 类型做限制。这个宏里面用了一个 LLVM 的 attribute 导致了非 ascii 码不能通过的问题。

已经提交 rdar://22737851。Apple 应该会有修正这个问题的考虑,所以暂时保留相关内容。

onevcat

onevcat commented on Sep 19, 2015

@onevcat
Member

添加了相关说明。issue 保持 open,如果 radar 有反馈的话我也会进一步跟进。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @looping@onevcat

        Issue actions

          @objc has been deprecated in favour of inheriting from NSObject · Issue #37 · swifter-tips/Public-Issues