首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift beta 6-令人困惑的链接器错误消息

Swift beta 6-令人困惑的链接器错误消息
EN

Stack Overflow用户
提问于 2014-08-19 04:31:34
回答 3查看 17.7K关注 0票数 58

在使用Xcode6 beta 6构建针对iOS 8的Swift程序时,我从链接器收到错误消息。此代码在beta 5中正确编译和运行。

Undefined symbol for architecture x86_64:
__TFSs26_forceBridgeFromObjectiveCU__FTPSs9AnyObject_MQ__Q_", referenced from:
 __TFC8RayTrace14RayTracingPlot15drawFocalPointfS0_FT_T_ in RayTracingPlot.o
ld: symbol(s) not found for architecture x86_64

下面是有问题的代码:

private func drawFocalPoint() {
    var attributes = Dictionary<String, AnyObject>()

    let FString: String = "F"
    let distance: CGFloat = focalDistance

    let centerX = CGRectGetMidX(bounds)
    let centerY = CGRectGetMidY(bounds)

    let circleRadius: CGFloat = 4.0
    let focalPointFrame = CGRectMake(0, 0, circleRadius * 2.0, circleRadius * 2.0)
    var path = UIBezierPath(ovalInRect: focalPointFrame)
    let color = UIColor.blackColor()

    let currentContext = UIGraphicsGetCurrentContext()
    CGContextSaveGState(currentContext)
    let shadowColor = UIColor(white:0, alpha:0.75).CGColor
    CGContextSetShadowWithColor(currentContext, CGSizeMake(0, 4), CGFloat(8), shadowColor)

    // Image F
    var imageFPath = UIBezierPath(CGPath: path.CGPath)
    let imageFTransform = CGAffineTransformMakeTranslation((centerX - distance - circleRadius),
        (centerY - circleRadius))
    imageFPath.applyTransform(imageFTransform)
    color.set()
    imageFPath.fill()
    FString.drawAtPoint(CGPointMake(centerX - distance - circleRadius, centerY + 5), withAttributes:attributes)

    CGContextSetShadowWithColor(currentContext, CGSizeMake(0.0, 0.0), CGFloat(0.0), nil) // Clear shadow
    CGContextRestoreGState(currentContext)
}

如果能提示我在这段代码的什么地方查找错误,我会很感激,这样我就可以修复它了。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-19 13:34:14

即使是在坏的Beta6被删除几个小时后发布的新版本,我也得到了这个错误。

我已经通过删除派生文件夹的内容解决了这个错误和其他类似的难以辨认的错误。您可以通过转到Preferences > Locations找到该文件夹所在的位置。

默认路径为: /Users/your username/Library/Developer/Xcode/DerivedData

当产品菜单在Xcode中打开时,您也可以按住Option,这会将Clean更改为Clean Build Folder...并且无需搜索文件夹即可完成相同的任务。

票数 119
EN

Stack Overflow用户

发布于 2015-01-03 20:50:00

这个错误的另一个原因(在Xcode 6.1.1和Xcode 6.2Beta 3中可以看到)是在一个类中只有一个大小写的枚举,并且在第二个类中声明了该类型的变量。

此代码将导致链接器错误:

class ClassA {
    enum ExampleEnum {
        case Option1
    }
}

class ClassB {
    var example: ClassA.ExampleEnum = .Option1
}

这会解决它的。

class ClassA {
    enum ExampleEnum {
        case Option1
        case Option2 // Added a second case
    }
}

class ClassB {
    var example: ClassA.ExampleEnum = .Option1
}

雷达获取更多信息和示例项目:http://openradar.appspot.com/19369147

只有一种情况的枚举在实践中是非常无用的,所以编译器可能正在优化它。我在设置一个新项目时遇到了这个问题,使用一个枚举来表示稍后确定的成就,并且只有一个占位符。

另请注意:使用Watchdog http://watchdogforxcode.com/可以避免担心派生数据问题。

票数 7
EN

Stack Overflow用户

发布于 2015-04-15 16:49:42

对于其他可能会遇到这个错误的人。我在实现CocoaPods而没有将目标的Other Linker Flags设置为$(inherited)时遇到过这种情况

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

https://stackoverflow.com/questions/25371556

复制
相关文章

相似问题

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