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

标签 objective-c xcode chdatastructures data-formatters

帮助简化 some custom Objective-C objects 的调试在 Xcode 调试器窗口中,我使用 related Apple documentation 为每个对象创建了一组数据格式化程序字符串。和 Xcode 的内置数据格式化程序作为指南。

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

问题是,当我创建一个包(以 this Apple sample code 为例)并安装它时(在 /Developer/Library/Xcode/CustomDataViews/ 或任何 Library/Application Support/Apple/Developer Tools/CustomDataViews/ 路径),Xcode 无法识别或使用自定义格式化程序。

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

最佳答案

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

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

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

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

简单的 plist 文件更小,创建起来很简单,也更容易修改。此外,与使用 bundle 时不同,我在添加、删除或修改 plist 时不必重新启动 Xcode;仅仅开始一个新的调试 session 就足以导致新的数据格式化程序被更新。我想我只是在创建一个包,因为示例代码显示了这一点,但我无法确定我的场景有什么优势,所以我坚持使用 plist。

关于objective-c - 为自定义 Obj-C 对象创建 Xcode 数据格式化程序包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1019172/

相关文章:

ios - UISlider 自定义缩略图图像大小调整问题

iphone - 在 iOS 中播放系统声音

ios - LARSAdController 中每次出现 "(Class)class"的预期标识符

objective-c - 如何在iOS项目中实现CHCircularBuffer?

iphone - 如何使用Apple SimpleFtpsample项目中的Listviewcontroller类从ftp获取文件夹列表

html - iOS WKWebView HTML5 音频在手机锁定后约 30 秒后停止

在 Xcode 4.5 中开发的 iOS 应用程序在 iOS 6 上运行良好,但在 iOS 5 上崩溃

objective-c - 实现 -hash/-isEqual :/-isEqualTo. ..:用于 Objective-C 集合

ios - 嵌入 ttf 字体不能完美地工作 Obj C