【问题标题】:Receiving and setting an Obj-C mutable pointer in a Swift function在 Swift 函数中接收和设置 Obj-C 可变指针
【发布时间】:2015-03-15 01:18:01
【问题描述】:

我正在尝试提供 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?) {
    //...
}

或者确实是完全不同的东西?

【问题讨论】:

    标签: objective-c macos swift


    【解决方案1】:

    仔细阅读文档后:

    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),因为它不太可能操作系统将使用 nil 粘贴板调用此方法...

    【讨论】:

      猜你喜欢
      • 2018-06-22
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 2016-02-06
      • 1970-01-01
      • 2013-10-31
      • 2018-12-31
      • 2017-05-29
      相关资源
      最近更新 更多