首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过getter函数提供属性来遵守协议时发生Swift编译器错误

通过getter函数提供属性来遵守协议时发生Swift编译器错误
EN

Stack Overflow用户
提问于 2014-06-06 05:41:49
回答 1查看 1.2K关注 0票数 3

我有一个试图符合NSFilePresenter协议的类。据我所知,只有两个要求,它们都是属性:

代码语言:javascript
复制
var presentedItemURL: NSURL! { get }
var presentedItemOperationQueue: NSOperationQueue! { get }

因为我正在将我现有的Objective-C项目迁移到Swift,所以我已经将其中一个项目作为ivar进行了维护,我想要维护:

代码语言:javascript
复制
var _trackingURL: NSURL! = ...

var presentedItemURL: NSURL! {
    return _trackingURL
}

var presentedItemOperationQueue: NSOperationQueue! {
    return NSOperationQueue.mainQueue()
}

然而,由于Xcode中的“Swift编译器错误”,这个构建失败了,但没有指明我做错了什么。我有来自编译器的堆栈跟踪,但我不能破译根本问题是什么:

代码语言:javascript
复制
0  swift                    0x000000010b10b608 llvm::sys::PrintStackTrace(__sFILE*) + 40
1  swift                    0x000000010b10baf4 SignalHandler(int) + 452
2  libsystem_platform.dylib 0x00007fff92578f1a _sigtramp + 26
3  libsystem_platform.dylib 0x00007fd0c225e968 _sigtramp + 802052712
4  swift                    0x000000010a74797a (anonymous namespace)::ObjCPrinter::visitVarDecl(swift::VarDecl*) + 762
5  swift                    0x000000010a746f7d swift::ASTVisitor<(anonymous namespace)::ObjCPrinter, void, void, void, void, void, void>::visit(swift::Decl*) + 125
6  swift                    0x000000010a74abcb (anonymous namespace)::ObjCPrinter::printMembers(swift::IteratorRange<swift::DeclIterator>) + 251
7  swift                    0x000000010a747603 swift::ASTVisitor<(anonymous namespace)::ObjCPrinter, void, void, void, void, void, void>::visit(swift::Decl*) + 1795
8  swift                    0x000000010a74638e swift::printAsObjC(llvm::raw_ostream&, swift::Module*) + 1934
9  swift                    0x000000010a4d0b6e printAsObjC(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, swift::Module*) + 286
10 swift                    0x000000010a4d0178 frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 3592
11 swift                    0x000000010a4cf35d main + 1533
12 libdyld.dylib            0x00007fff978e45c9 start + 1

...

<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: merge-module command failed due to signal (use -v to see invocation)

不管我对编译器做了什么,如果编译器能够幸存下来就好了,但我更愿意在我的代码中修复这个问题,无论它是什么。

EN

回答 1

Stack Overflow用户

发布于 2014-07-02 06:59:23

当我在类扩展中编写这样的动态属性时,我也遇到了类似的问题:

代码语言:javascript
复制
class MyClass {
  func test() {
    let myVar = myProperty
  }
}

extension MyClass {
  var myProperty: String { return "TEST" }
}

MyClass().test()

这会使XCode在游乐场上崩溃,并且当这样的代码包含在我的项目的.swift文件中时,它会导致构建失败,并出现神秘的"Swift编译器错误“。

可能是相关的,无论如何,我都报告了它(我想是rdar://17527780)。

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

https://stackoverflow.com/questions/24070672

复制
相关文章

相似问题

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