Swift 3:无法识别的选择器发送到实例 Xcode 8 [重复]

swift

1个回答

写回答

咦咦咦yiyu

2025-09-05 03:00

+ 关注

Swift
Swift

Swift 3中,如果我们尝试发送一个无法识别的选择器给一个实例,我们将会遇到编译错误。这个错误在Xcode 8中变得更加明显,因为Swift 3对选择器的使用进行了一些改变。

在以前的版本中,我们可以通过字符串来创建一个选择器并将其发送给一个实例。然而,在Swift 3中,选择器的创建和使用发生了变化。现在,我们需要使用#selector关键字来创建一个选择器,并且只能将其发送给一个符合特定条件的方法。

让我们来看一个例子,以更好地理解这个问题。假设我们有一个Person类,其中包含一个方法greet()。在旧版本的Swift中,我们可以使用字符串创建一个选择器并将其发送给该方法。代码如下:

Swift

class Person {

@objc func greet() {

print("Hello!")

}

}

let john = Person()

let selector = Selector("greet")

john.performSelector(selector)

然而,在Swift 3中,我们需要使用新的语法来创建选择器并将其发送给该方法。代码如下:

Swift

class Person {

@objc func greet() {

print("Hello!")

}

}

let john = Person()

let selector = #selector(Person.greet)

john.perform(selector)

在这个例子中,我们首先定义了一个Person类,并在其中定义了一个名为greet()的方法。然后,我们创建了一个Person类的实例john,并使用#selector关键字来创建一个选择器,并将其发送给greet()方法。

这个例子展示了在Swift 3中正确使用选择器的方法。我们使用#selector关键字来创建选择器,并使用perform方法将其发送给实例的方法。这种新的语法使得代码更加安全,并且可以在编译时捕捉到潜在的错误。

Swift 3中,无法识别的选择器发送给实例将会导致编译错误。为了解决这个问题,我们需要使用#selector关键字来创建选择器,并将其发送给符合特定条件的方法。这种新的语法使得代码更加安全,并且可以在编译时捕捉到潜在的错误。

参考资料

- [Swift 3: unrecognized selector sent to instance Xcode 8 [duplicate]](Swift-3-unrecognized-selector-sent-to-instance-xcode-8">https://stackoverflow.com/questions/39677330/Swift-3-unrecognized-selector-sent-to-instance-xcode-8)

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号