我有一个用Objective-C编写的iOS应用,想要转换为Swift。根据Apple在Cocoa和Objective-C中使用Swift的要求,我添加了一个与要替换的Objective-C类同名的新Swift文件,放入存根类声明,并从目标中删除了原始的Objective-C类。
错误报告是在链接时找不到该类的符号:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_Chunk", referenced from:
objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这是我的存根类声明:
import Foundation
@objc class Chunk {
}
我可以检查一些链接器设置吗?
是的,我已经清理了项目,删除了派生数据文件夹,并确认Swift文件在Build Phases的Compile Sources部分中。
现在,我还用Xcode 6.1.1创建的全新项目重现了该问题,该项目位于https://github.com/dpassage/Foo。
在链接上(Apple Dev)...,您必须再次检查“将Swift导入Objective-C” :)
在ViewController.m
...中,删除此行:#import "Chunk.h"
并添加以下行:#import "Foo-Swift.h"
“文件:<#YourProjectName#>-Swift.h
即使您看不到它,也应该已经在您的项目中自动创建了它。”
更新
如果Chunk.swift是Objective-C类的后代..请将其替换@objc class Chunk
为:(@objc class Chunk : NSObject
或conf与您的要求)。如果不是,请从这里https://stackoverflow.com/a/24005242/1702413检查“在Objective-C中使用PURE Swift类”
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句