objective-c - 在 Swift 函数中接收和设置 Obj-C 可变指针

标签 objective-c macos swift

我正在尝试提供 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/

相关文章:

iphone - 添加目标 :self versus addTarget:nil

ios - 有什么方法可以添加事件指示器以等待从 nsurlconnection 中获取完整的数据

javascript - Safari 和 WKWebview 中的不同滚动行为

ios - 如何在 ios 8 swift MPMoviePlayerDidExitFullscreenNotification 中触发完成按钮事件?

ios - Storyboard界面未立即更新

ios - UIScrollView 的 contentView 的高度基于使用 Storyboard 的内部内容

java - 通过 Java 获取 Activity 监视器 (Mac OSX)

php - osx 10.10 Curl POST 到 HTTPS url 给出 SSLRead() 错误

java - 断言不起作用

swift - Swift init 能否仅适用于 Objective C?