小编Alf*_*uro的帖子

尝试从 cmake 文件夹生成 Xcode 项目时,出现与 Xcode 新构建系统相关的错误。任何可能的解决方案?

我正在尝试使用这个非常好的答案从 cmake 文件夹生成一个 Xcode 项目。执行此命令时:

cmake -G Xcode <dir of CMakeLists.txt>
Run Code Online (Sandbox Code Playgroud)

我得到:

CMake Error in CMakeLists.txt:
  The custom command generating

    /Users/fofo/Developer/ClientProject/desktop/always_build

  is attached to multiple targets:

    rake-all
    stage

  but none of these is a common dependency of the other(s).  This is not
  allowed by the Xcode "new build system".


CMake Generate step failed.  Build files cannot be regenerated correctly.
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式指定 cmake -G Xcode 使用旧的 Xcode 构建系统,还是可以以某种方式解决更改 cmake 文件的问题?任何帮助是极大的赞赏。谢谢

xcode cmake

7
推荐指数
1
解决办法
840
查看次数

为什么NSApplicationDelegate方法openFiles:多次拖动到停靠图标时被多次调用?

我有一个Mac OS X应用程序,它实现了 - (void)应用程序openFiles:方法来响应应用程序图标上的拖动文件.我在目标信息设置的文档类型部分中有一个允许的文件类型列表,Finder确实允许拖动,但是当pdf在拖动项目列表中时,我的委托方法被调用两次:一个用于所有元素而没有pdf,仅用于PDF.这当然使我无法正确处理这种情况.任何人都可以帮助我或解释发生了什么?谢谢

xcode cocoa objective-c nsapplication nsapplication-delegate

6
推荐指数
1
解决办法
438
查看次数

如何在进行权限提升的 macOS 应用程序中更新辅助工具?

我正在使用权限提升和现代方法在 macOS 应用程序中实现这一点。在测试时,我注意到如果您部署新版本的应用程序,特权助手不会自动更新。Library/PrivilegedHelperTools/ 中的现有副本将继续使用。在更好的授权示例 Apple 示例项目中,它确认了这一点:

注意事项

使用此技术的实际应用程序必须处理更新其特权帮助工具的问题。由于 SMJobBless 的限制(特别是 SMJobBless 请求授权 /before/ 进行版本检查),这比它应该的更难。处理更新的最佳方法是:

  1. 实现“获取版本”操作,您的应用可以使用该操作来确定已安装工具的版本

  2. 如果返回的版本太旧,让应用程序更新工具

该示例没有直接显示这一点,但确实显示了每个步骤。对于第 1 步,查看“获取版本”按钮执行的代码路径。执行第 2 步只需调用 SMJobBless,它将代表您进行更新。

有人有关于如何使用 jobBless 实际更新辅助工具的示例吗?谢谢你的帮助。

macos cocoa objective-c swift

6
推荐指数
0
解决办法
417
查看次数

我注意到,在 Xcode 13 中,有时在项目中,包含可交付成果的“产品”组有时不可见。有什么解决办法吗?

我正在使用 Xcode 13 来执行某些任务,尽管它仍处于测试阶段,并且我注意到项目的“产品”组/文件夹在项目导航器中不可见的情况经常发生。我怀疑可能有一个关于它的新项目设置,但我还没有找到它,所以我想知道是否有人已经发现了它。感谢您的关注。

xcode

6
推荐指数
1
解决办法
1545
查看次数

在 macOS Mojave 上,在可可应用程序中,如何使用 AVSpeechSynthesizer?

AVSpeechSynthesizer 被标记为可在 macOS Mojave beta 上使用。

此前,它仅适用于 iOS、tvOS 和 watchOS。但是,如果我在 Xcode 10 中准备一个小型 macOS 测试项目,则会出现错误“使用未解析的标识符‘AVSpeechSynthesizer’”。在顶部,我有:

import Cocoa
import NaturalLanguage
import AVFoundation
Run Code Online (Sandbox Code Playgroud)

我的代码是:

let string = "Mickey mouse went to town"

let recognizer = NLLanguageRecognizer()
recognizer.processString(string)
let language = recognizer.dominantLanguage!.rawValue

let speechSynthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: string)
utterance.voice = AVSpeechSynthesisVoice(language: language)
speechSynthesizer.speak(utterance)
Run Code Online (Sandbox Code Playgroud)

它与 iOS 上的代码完全相同,但在 iOS 上它可以工作,在 macOS 上它会给出错误。任何帮助深表感谢。谢谢

macos cocoa text-to-speech swift

5
推荐指数
1
解决办法
579
查看次数

在 Swift 中,如果我有一个捕获 [weak self] 的闭包,在闭包的开头解开可选的 self 是一种好习惯吗?

我在 macOS 应用程序中使用 Swift,Xcode 是 12.5.1。想象一下,我有以下代码:

func performAsyncTask(completion: { [weak self] (error: Error?) in 

     self?.someProperty = 0.0
     self?.someOtherProperty = 0.0
     // Other similar statements follow
})
Run Code Online (Sandbox Code Playgroud)

将其更改为:

func performAsyncTask(completion: { [weak self] (error: Error?) in 
     
     guard let self = self else { return }
     self.someProperty = 0.0
     self.someOtherProperty = 0.0
     // Other similar statements follow
})
Run Code Online (Sandbox Code Playgroud)

我相信第一个实现更好,因为 self 可能在语句之间变为 nil ,因此在开始时展开可能不那么干净。我希望专家能给我带来正确的方向。感谢您的关注。

closures weak-references swift

3
推荐指数
2
解决办法
51
查看次数

当 iOS 应用程序崩溃时,有没有办法采取行动,从而执行代码?这可能吗?

当 iOS 应用程序崩溃时,有没有办法采取行动,从而执行代码?具体来说,我想保存核心数据存储。这可能吗?我想说这是可能的,因为例如,Firebase 必须在线发送信息才能使 crashlytics 工作。如何才能实现这一目标?谢谢

ios

2
推荐指数
1
解决办法
258
查看次数

在使用 Amazon iOS SDK 的 swift iOS 应用程序中,如何为 AWSS3TransferUtility 下载操作设置自定义超时?

我在 iOS 12 的 swift 应用程序中使用适用于 iOS 的 AWS 开发工具包。我的应用程序必须列出 AWS S3 存储桶中的文件并下载其中的一些文件。列表文件操作运行良好,我成功地控制了其超时。我没有成功地完成下载任务。我的代码如下:

let credentialProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.USEast1, identityPoolId: "<pool-id>")
let configuration = AWSServiceConfiguration(region: AWSRegionType.APSoutheast2, credentialsProvider: credentialProvider)

configuration?.timeoutIntervalForRequest = 30.0
configuration?.timeoutIntervalForResource = 86400


let transferUtilityConfiguration = AWSS3TransferUtilityConfiguration.init()

transferUtilityConfiguration.timeoutIntervalForResource = 86400
transferUtilityConfiguration.retryLimit = 1

AWSS3TransferUtility.register(with: configuration!, transferUtilityConfiguration: transferUtilityConfiguration, forKey: "com.mykey")

transferUtility = AWSS3TransferUtility.s3TransferUtility(forKey: "com.mykey")


let bucket = "com.mybucket"


transferUtility.configuration.maxRetryCount = 1

let urlForSavingFile = URL.init(fileURLWithPath: "")


transferUtility.download(to: urlForSavingFile, bucket: bucket, key: self.latestFileOnServer.key, expression: expression, completionHandler: self.completionHandler).continueWith { (task) -> …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 ios swift

1
推荐指数
1
解决办法
1511
查看次数