【问题标题】:Is @IBAction just a syntax in Swift or does @Something mean a particular thing in Swift?@IBAction 只是 Swift 中的一种语法,还是 @Something 在 Swift 中意味着特定的东西?
【发布时间】:2014-10-31 20:52:25
【问题描述】:

@IBAction 只是 Swift 中的一种语法差异,还是表示特定的东西。 此外,在编写@UIApplicationMain 的 AppDelegate.swift 中也可以看到类似的用法。

【问题讨论】:

    标签: ios iphone swift ios8 ibaction


    【解决方案1】:

    这些是swift中的attributes。它们对编译器有一些特殊的含义。例如:@UIApplicationMain由编译器合成main.swift文件作为应用程序的入口点。来自swift guide

    属性提供有关声明或类型的更多信息。 Swift 中有两种属性,适用于 声明和适用于类型的声明。

    NSApplicationMain 将此属性应用于类以指示它是应用程序委托。使用该属性相当于调用 NSApplicationMain 函数并将此类的名称作为 委托类的名称。

    如果您不使用此属性,请提供一个带有 main 的 main.swift 文件 调用 NSApplicationMain 函数的函数。例如,如果 您的应用程序使用 NSApplication 的自定义子类作为其原理 类,调用 NSApplicationMain 函数而不是使用这个 属性

    Here is whole list of attributes in swift

    来自苹果斯威夫特blog

    在 Xcode 中,Mac 模板默认包含一个“main.swift”文件,但是 对于 iOS 应用程序,新 iOS 项目模板的默认设置是添加 @UIApplicationMain 到一个常规的 Swift 文件。这会导致编译器 为您的 iOS 应用程序合成一个主要入口点,并消除 需要一个“main.swift”文件。

    或者,您可以链接到 main 编写的实现 Objective-C,在增量迁移项目时很常见 从 Objective-C 到 Swift。

    在main.swift中编写代码。它将作为应用程序的入口点

    //main.swift
    import Foundation
    import UIKit
    
    UIApplicationMain(C_ARGC, C_ARGV,nil, NSStringFromClass(AppDelegate))
    

    【讨论】:

    • "如果您不使用此属性,请提供一个 main.swift 文件,其中包含一个调用 NSApplicationMain 函数的 main 函数。例如,如果您的应用程序使用 NSApplication 的自定义子类作为其主体类,调用 NSApplicationMain 函数而不是使用此属性”我该如何在 main.swift 中执行此操作?
    • 创建 main.swift 并编写 main 函数。Swift 应用程序查看 main.swift 是否存在。如果存在则调用 main 函数。
    • NSApplicationMain(C_ARGC, C_ARGV) 现在就是这样
    猜你喜欢
    • 2011-05-28
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2017-06-14
    • 1970-01-01
    相关资源
    最近更新 更多