【发布时间】:2015-06-10 01:13:00
【问题描述】:
我开始学习 Swift,并且一直在关注 YouTube 上非常好的斯坦福大学视频讲座。如果您有兴趣或有帮助,这里是一个链接(尽管不需要理解我的问题):
Developing iOS 8 Apps with Swift - 2. More Xcode and Swift, MVC
在听完讲座后,我发现(据我所知)我的代码与视频中的代码相同,但在我的系统上出现了编译器错误。经过大量的试验和错误后,我设法将我的代码简化为两个示例,其中一个会产生错误,另一个或不会产生错误,但我不知道实际导致错误的原因或如何解决它。
产生错误的代码是:
import UIKit
class BugViewController: UIViewController
{
func perform(operation: (Double) -> Double) {
}
func perform(operation: (Double, Double) -> Double) {
}
}
这会产生以下编译器错误:
使用 Objective-C 选择器 'perform:' 的方法 'perform' 与之前使用相同 Objective-C 选择器的声明冲突
通过简单地删除 UIViewController 的子类,代码编译:
import UIKit
class BugViewController
{
func perform(operation: (Double) -> Double) {
}
func perform(operation: (Double, Double) -> Double) {
}
}
其他一些可能相关或不相关的信息:
- 我最近升级到 Yosemite。
- 当我安装 Xcode 时,我最终得到了一个 Beta 版本(版本 6.3 (6D543q)),因为(如果我没记错的话)这是我需要在我的 OS X 版本上运行的版本。
我有一半希望这是编译器中的一个错误,否则这对我来说没有任何意义。非常感谢您的任何帮助!
【问题讨论】:
-
您可以在 Yosemite 上运行 Xcode 6.2。您可以从应用商店下载它,它可以在您的系统上使用 Beta 版本。目前我不建议在斯坦福课程中使用 Xcode 6.3,因为它是 beta 版,并且包含 Swift 1.2,这与视频中使用的早期版本的 Swift 不同。
-
4 月 5 日用户 (feb) 的(当前接受的)答案不再是最好的答案。相反,4 月 16 日 (James Zhang) 的回答更加具体和正确。
标签: swift