当前位置: 首页 > 面试题库 >

Xcode 8 Beta 6:main.swift无法编译

郑琦
2023-03-14
问题内容

我们有一个自定义的UIApplication对象,所以我们的main.swift是

import Foundation
import UIKit

UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(MobileUIApplication), NSStringFromClass(AppDelegate))

并且在Xcode 8 beta 5中不起作用,所以我们使用了这个

//TODO Swift 3 workaround? https://forums.developer.apple.com/thread/46405
UIApplicationMain( Process.argc, UnsafeMutablePointer<UnsafeMutablePointer<CChar>>(Process.unsafeArgv), nil, NSStringFromClass(AppDelegate.self))

在Xcode 8 beta 6上,我们获得了 使用未解析的标识符’Process’

我们需要在Xcode 8 beta 6 / Swift 3中做什么来定义UIApplicationMain?


问题答案:

我这样写:

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

要改变UIApplication类,替代NSStringFromClass(MobileUIApplication.self)nil该配方。

但是,如果您的 唯一 目的是将UIApplication子类替换为共享应用程序实例,则有一种更简单的方法:在 Info.plist中 ,添加“
Principal
class”键并将其值设置为UIApplication子类的字符串名称,并使用@objc(...)赋予该对象相同的Objective-
C名称的属性标记该子类的声明。


编辑 现在,在Swift
4.2中解决了此问题。CommandLine.unsafeArgv现在具有正确的签名,并且可以UIApplicationMain轻松拨打电话:

UIApplicationMain(
    CommandLine.argc, CommandLine.unsafeArgv, 
    nil, NSStringFromClass(AppDelegate.self)
)


 类似资料:
  • 我得到这个错误,而执行maven试图修复此代码5天非解决方案工作 [ERROR]无法执行目标org.apache.maven.plugins:maven-surefire-plugin:2.19.1:项目com.learn.selenium测试(default-test):目标org.apache.maven.plugins的执行default-test:maven-surefire-plugin

  • 我下载了cratedb的源代码,但无法正确编译,下面是详细说明:jdk:1.8 /workspace/crate编译 应该是elasticsearch包不见了,下一步怎么办? 谢谢!

  • 我在我的源代码中使用Java10 API,当我尝试用maven和思想编译这段代码时,它会抛出一个错误: 我的环境: > JDK 10 Maven:3.6 想法 如果我删除这个API,我就没事了。 我确实遵循以下事情: < li >向pom添加编译器选项 将 IDEA 语言级别更改为 java10 文件- 以上两个不起作用。

  • 问题内容: 我是使用库的新手,但是我需要能够向忘记密码的用户发送电子邮件。我正在尝试使用JavaMail和Apache Commons Email来实现这一点。但是,我认为我一定是错误地导入了库。 当我尝试发送电子邮件时,收到以下消息: 编码: 堆栈跟踪: 我已经尝试了几件事: 将包含所有.java文件的org.apache.commons.mail文件夹复制到我的netbeans项目的源文件中,

  • 问题内容: 我试图得到以下消息: 好吧,有一个开放的jdk,我也下载了另一个。我尝试将JAVA_HOME指向两者,现在已设置: 我还尝试选择其中一种打开方式,但是其中的不同jdk版本出现相同的错误。 我该如何解决?提前致谢。 问题答案: 似乎您的PATH未正确选择…“ echo $ PATH”的输出是否包含javac所在的目录?我建议如下: 打开终端并执行: 如果javac -version仍然不

  • 问题内容: 我想安装rJava,但没有用。当我在控制台中键入R CMD javareconf时,出现以下错误: 任何想法如何解决? 问题答案: 该文件是JDK安装的一部分。您可能没有正确安装Java JDK。从此处下载Oracle Java ,或使用软件包管理器。 如果您已经安装了Java JDK,则将JAVA_HOME环境变量设置为指向JDK目录。