在10.6中,Apple添加+[NSPropertyListSerialization dataWithPropertyList:format:options:error:]并标记为旧版本+[NSPropertyListSerialization dataFromPropertyList:format:errorDescription:]已过时,很快就会被弃用.在10.6及更高版本上使用较新的调用,并且仍然在早期的OS版本上运行的一种方法是这样的:
if ([NSPropertyListSerialization respondsToSelector:@selector(dataWithPropertyList:format:options:error:)]) {
data = [NSPropertyListSerialization dataWithPropertyList:dict
format:NSPropertyListXMLFormat_v1_0
options:0
error:&err];
} else {
data = [NSPropertyListSerialization dataFromPropertyList:dict
format:NSPropertyListXMLFormat_v1_0
errorDescription:&errorDescription];
}
Run Code Online (Sandbox Code Playgroud)
针对10.4 SDK构建(为了与该版本兼容),这会导致:warning: 'NSPropertyListSerialization' may not respond to '+dataWithPropertyList:format:options:error:'更糟糕的是,由于编译器不知道这个选择器,它可能会错误地传递参数.
NSInvocation是调用新API的已批准/最佳方式,就SDK而言,它还不存在吗?
当用户单击我的应用程序中的按钮时,我希望Finder来到前面并显示文件夹的内容.该NSWorkspace班有两个电话,activateFileViewerSelectingURLs(:)并且selectFile(:inFileViewerRootedAtPath:),几乎做我想做的,但他们都选择一个或多个项目.我不希望Finder选择任何东西.
如果我进入,我会看到我想要的行为
/usr/bin/open /path/to/my/folder
Run Code Online (Sandbox Code Playgroud)
在终端.是否有Cocoa API用于执行此操作,或者我是否需要NSTask运行/usr/bin/open?