小编Jim*_*ews的帖子

如何有条件地使用新的Cocoa API

在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而言,它还不存在吗?

cocoa objective-c

4
推荐指数
1
解决办法
1051
查看次数

如何以编程方式在Finder中打开文件夹而不选择任何内容?

当用户单击我的应用程序中的按钮时,我希望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

macos cocoa

4
推荐指数
1
解决办法
2497
查看次数

标签 统计

cocoa ×2

macos ×1

objective-c ×1