NSTask / Process方法和属性已被弃用。

13
最近的苹果文档中,无论是 NSTask 还是 Process ,都有几个被弃用的方法和属性,尽管没有标记为API Availability Macro

实例属性

@property(copy) NSString *launchPath;
@property(copy) NSString *currentDirectoryPath;

var launchPath: String? { get set }
var currentDirectoryPath: String { get set }

实例方法

- (void)launch;

func launch()

类型方法

+ (NSTask *)launchedTaskWithLaunchPath:(NSString *)path 
                             arguments:(NSArray<NSString *> *)arguments; 

class func launchedProcess(launchPath path: String, 
                 arguments: [String]) -> Process

看起来似乎没有可替代的选择,那是怎么回事呢?

1个回答

20

貌似没有可替代品

实际上是有的,现在API与URL有关。

实例属性

@property(copy) NSURL *executableURL;
@property(copy) NSURL *currentDirectoryURL;

var executableURL: URL? { get set }
var currentDirectoryURL: URL? { get set }

实例方法

- (BOOL)launchAndReturnError:(out NSError * _Nullable *)error;

func run() throws

类型方法

+ (NSTask *)launchedTaskWithExecutableURL:(NSURL *)url 
                                arguments:(NSArray<NSString *> *)arguments 
                                    error:(out NSError * _Nullable *)error 
                       terminationHandler:(void (^)(NSTask *))terminationHandler;

class func run(_ url: URL, 
               arguments: [String], 
               terminationHandler: ((Process) -> Void)? = nil) throws -> Process

1
有没有地方提到这个变化?谢谢! - l'L'l
我记得在WWDC的视频中提到过。 - vadian
什么是 WWDC 视频? - user426132
2
@user426132 在WWDC 2017中提到的Cocoa的新内容,被提及在一个子句中。 - vadian
10
到了2019年中期,XCode文档仍然没有概述或讨论笔记。同时,已被弃用的函数也没有指向新API的提示。感谢@vadian指出这些问题。 - BigHeadCreations

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接