【发布时间】:2015-05-20 16:56:26
【问题描述】:
我调用的方法在 Objective C 中定义为:
@interface F53OSCMessage : F53OSCPacket <NSCoding, NSCopying>
{
NSString *_addressPattern;
NSString *_typeTagString;
NSArray *_arguments;
id _userData;
}
我正在尝试将这个变量从 Swift 传递给它:
var test = [1, 2, "string"];
我试过这样做:
var message = F53OSCMessage(addressPattern: endpoint, arguments: test);
和
var message = F53OSCMessage(addressPattern: endpoint, arguments: test as NSArray!);
但是当我这样做时,我得到了错误:
找不到接受类型为“(addressPattern: String, arguments: NSArray!)”的参数列表的“F53OSCMessage”类型的初始化程序
然后我尝试了(根据 Xcode 的建议):
var message = F53OSCMessage(addressPattern: endpoint, arguments: args as [AnyObject]!);
但这给了我几个 Apple Macho-O 链接器错误:
“_OBJC_CLASS_$_F53OSCClient”,引用自:
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
知道发生了什么吗?我对为什么 Xcode 需要 [AnyObject] 感到困惑,即使该方法将 _arguments 定义为 NSArray。像这样调用方法有效,这让我更加困惑。
var message = F53OSCMessage(addressPattern: endpoint, arguments: "");
【问题讨论】:
-
“但这给了我几个 Apple Macho-O 链接器错误” - 不是,导致链接器错误的不是相关更改。 更改修复 你的代码以便它编译。 它没有链接的事实意味着你没有将最终的可执行文件与包含@的目标文件链接987654328@班级。
-
根据 Xcode 的建议,它对参数参数的期望是什么:?
-
@Amit89 Xcode 期待
F53OSCMessage(addressPattern: <#String!#>, arguments: <#[AnyObject]!#>) -
@TheParamagneticCroissant 我该怎么做才能解决这个问题?
-
@Alfo 哪个问题?
标签: objective-c swift