为自定义Obj-C对象创建Xcode数据格式化程序包

Qui*_*lor 5 xcode objective-c data-formatters chdatastructures

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

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

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

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

Qui*_*lor 4

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

\n\n

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

\n\n

由于我不需要定义 C 函数来显示我正在处理的任何对象和结构,因此更简单的方法是仅放置 plist 文件(任何名称都可以 \xe2\x80\x94 我的是CHDataStructures.plist)到两个位置之一:

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

简单的 plist 文件较小,创建起来很简单,并且更容易修改。另外,与使用捆绑包不同,当我添加、删除或修改 plist 时,我不必重新启动 Xcode;只需启动新的调试会话就足以导致新的数据格式化程序被更新。我认为我只是创建了一个捆绑包,因为这就是示例代码所显示的内容,但我无法确定我的场景的任何优势,所以我坚持使用 plist。

\n