我正在尝试提供 OS X 服务,但我不确定如何将以下 Objective C 文档示例转换为 Swift。任何指针(请原谅平底锅)将不胜感激!
来自 Apple 的文档(“实现服务方法”部分):
- (void)simpleEncrypt:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error {
//...
}
这在 Swift 中是等效的吗?
func simpleEncrypt(pboard: NSPasteboard!, userData: String?, error: AutoreleasingUnsafeMutablePointer<String?>) {
//...
}
或者应该是:
func simpleEncrypt(pboard: NSPasteboard, userData: String, inout error: String?) {
//...
}
或者确实是完全不同的东西?
最佳答案
在仔细阅读文档后:
import AppKit
@objc public class Servicer: NSObject {
@objc public func service(pboard: NSPasteboard?, userData: String?, error: AutoreleasingUnsafeMutablePointer<NSString?>) {
error.memory = "Not yet implemented!"
}
}
这被移植到“Servicer-Swift.h”中的 obj-c 中:
SWIFT_CLASS("_TtC8Servicer8Servicer")
@interface Servicer : NSObject
- (void)service:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString * *)error;
- (instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
pboard 可能是一个隐式展开的可选(NSPasteboard!)或者甚至是一个简单的引用(NSPasteboard),因为它不太可能操作系统将使用零粘贴板调用此方法...
关于objective-c - 在 Swift 函数中接收和设置 Obj-C 可变指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29056193/