【问题标题】:Can a single .swift file in Xcode contain entire source code of an iOS app?Xcode 中的单个 .swift 文件可以包含 iOS 应用程序的完整源代码吗?
【发布时间】:2017-09-07 06:01:15
【问题描述】:

换句话说,Xcode 中的 Swift 代码可以像在 Playground 文件中那样表现吗?

【问题讨论】:

  • 前几天有人问过,现在找不到了。你试过了吗?为什么要这样做?您的问题/问题是什么?

标签: ios swift xcode swift-playground


【解决方案1】:

当然可以。

这个特殊文件被称为 main.swift,它的行为就像一个 Playground 文件。

来自Files and Initialization,Apple Swift 博客上的帖子:

... “main.swift” 文件可以包含顶级代码,而 订单相关规则也适用。实际上,第一行代码 在“main.swift”中运行被隐式定义为主入口点 为程序。这允许最小的 Swift 程序是一个单一的 行——只要该行在“main.swift”中。

但是,在 iOS 上,@UIApplicationMain 是应用程序入口点。它会自动为您完成整个启动工作。但是在main.swift的iOS应用中,你必须手动初始化它。

在 Swift 3.1 中,您的 main.swift 文件应该像这样开始:

// main.swift

import Foundation
import UIKit

class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
}

UIApplicationMain(
    CommandLine.argc,
    UnsafeMutableRawPointer(CommandLine.unsafeArgv)
        .bindMemory(
            to: UnsafeMutablePointer<Int8>.self,
            capacity: Int(CommandLine.argc)),
    nil,
    NSStringFromClass(AppDelegate.self)
)

// Your code begins here

UIApplicationMain initializationMatt Neuburg提供。

【讨论】:

    【解决方案2】:

    是的,但 AppDelegate 除外。不建议这样做,但在一个文件中可以有多个类。

    【讨论】:

      【解决方案3】:

      是的,你可以这样做,就像你可以在一行代码中编写所有代码一样,如果你真的想用分号来结束你的行。虽然,这绝对不推荐,因为它会引起很多混乱,你不得不费心弄乱原始的组织文件。

      【讨论】:

        【解决方案4】:

        是的,因为所有文件都可以作为顶级代码在另一个文件中看到。但出于同样的原因,让您的工作空间变得混乱毫无意义。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多