5

为了帮助简化 Xcode 调试器窗口中一些自定义 Objective-C 对象的调试,我使用相关的 Apple 文档和 Xcode 的内置数据格式化程序作为指南,为每个对象创建了一组数据格式化程序字符串。

如果我将自定义摘要字符串与 Xcode 附带的数据格式化程序一起放在/Developer/Library/Xcode/CustomDataViews/中,我的自定义摘要字符串会很好用。但是,我宁愿不这样做,因为用户可能没有对该目录的写入权限,并且将自定义格式化程序与内置格式化程序混合可能会造成混淆。同样,将我自己的条目添加到~/Library/Application Support/Apple/Developer Tools/CustomDataViews/CustomDataViews.plist也可以,但是该文件用于覆盖默认值的用户定义值,并且它的条目被Xcode 调试器 GUI。我真正想要的是能够将带有我的数据格式化程序的文件放在一个位置,以便 Xcode 识别它们,但如果需要,用户仍然可以选择性地覆盖我的设置(在另一个文件中)。

问题是,当我创建一个包(按照这个 Apple 示例代码的示例)并安装它(在/Developer/Library/Xcode/CustomDataViews/或任何Library/Application Support/Apple/Developer Tools/CustomDataViews/路径中) , Xcode 无法识别或使用自定义格式化程序。

关于数据格式化程序包细节的文档有点少(主要是Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin中的单个头文件),可能是因为该功能不是 Xcode 的主要功能之一。;-) 任何帮助将不胜感激。

4

2 回答 2

4

我最近能够回到这个问题上,我相信我已经找到了答案。

我已经知道数据格式化程序包必须在内部包含属性列表文件,名为“ Contents/Resources/*.plist ”。但是,要使包真正工作,它还必须在Contents/MacOS/目录中包含一个与包同名的可执行文件。据我所知,foo.c只要您编译和链接二进制文件,即使是一个完全空的文件也足够了。我什至不必在 Xcode 中为股票 CFPlugin Bundle 项目触摸 Info.plist,只需在目标资源中包含 CustomDataViews.plist。

Since I don't need to define C functions to display any of the objects and structs I'm dealing with, the far easier approach is to just put the plist file (any name will do — mine is CHDataStructures.plist) into one of two locations:

  • ~/Library/Application Support/Developer/Shared/Xcode/CustomDataViews/
  • /Library/Application Support/Developer/Shared/Xcode/CustomDataViews/

Simple plist files are smaller, trivial to create, and easier to modify. Also, unlike when using bundles, I didn't have to relaunch Xcode when I added, removed, or modified the plist; just starting a new debugging session was sufficient to cause new the data formatters to be updated. I think I was only creating a bundle because that's what the sample code showed, but I can't determine any advantages for my scenario, so I'm sticking with the plist.

于 2009-07-08T05:14:26.383 回答
2

从 Xcode 2.5 和 3.0 开始,这些东西的位置已经改变,以支持多个版本的 Xcode 在一个系统上共存。您应该将自定义数据格式化程序放入Library/Application Support/Developer/Shared/CustomDataViews本地 ( /) 或用户 ( ~) 域中的目录 " ";那么它们应该在您下次启动 Xcode 时可用。

上面路径中的Shared可以是版本号,例如,3.0如果3.1您正在创建特定于特定 Xcode 版本的内容。

于 2009-06-19T18:35:27.333 回答