objective-c – Apple允许我在自己的应用程序中重用它们的图标吗?

在我的OS X应用程序中,我允许用户打开Finder窗口.我想在我的“打开Finder”按钮上使用Finder的图标.我的应用程序将进入App Store,但我宁愿预先防止任何违反Apple使用其图标的政策.

那么,Apple会允许重复使用吗?并且,任何人都可以提供相应的Apple文档参考吗? (我以为我读过它是不允许的,但我现在找不到它.)

更新:
为了处理案件,感兴趣的应用程序没有运行,我使用了superfell对上一个问题12166532的回答,如下所示:

// Return an application's icon using its bundle identifier
- (NSImage *) applicationIconWithBundleIdentifier: (Nsstring *) bundleIdentifier
{
    NSImage *image = [NSImage imageNamed:NSImageNameComputer]; // fallback icon

    Nsstring *path = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:bundleIdentifier];
    if (path) {
        image = [[NSWorkspace sharedWorkspace] iconForFile:path];
    }

    return image;
}

但是,我非常感谢Rob的回答让我走上正轨.

解决方法

它可能很好,因为Apple不太可能追求你的使用.它也可能很好,在某种意义上,应用程序提供专门用于其他程序(如Finder)的图标,以便操作应用程序.您是否被起诉取决于Apple的法律部门,您是否会获胜取决于您所在国家/地区的版权法(以及该法律的合理使用例外情况).您可以向Apple要求明确许可;详情请见 their web site.

无论如何,如果您未通过App Store审核,请更改图标.没什么大不了.

您可能不想对图标进行硬编码.相反,在运行时获取图标如下:

NSImage *imageForAppWithBundleIdentifier(Nsstring *bundleIdentifier) {
    NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
    Nsstring *appPath = [workspace absolutePathForAppBundleWithIdentifier:bundleIdentifier];
    return [workspace iconForFile:appPath];
}

Finder的包标识符是com.apple.finder.终端的包标识符是com.apple.Terminal.

$osascript -e 'tell app "Finder" to get id'
com.apple.finder
$osascript -e 'tell app "Terminal" to get id'
com.apple.Terminal

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...