1

我正在分析一个Objective C++程序,在负责的调用者中,它没有显示创建对象的确切方法,也没有显示释放点,它只显示“CA::Display::DisplayLink::dispatch(unsigned long long, unsigned long long) “我正在分析的程序是一个使用 cocos2d 的游戏,大多数类都是 C++ .mm。我知道 xcode 不完全支持 Obj-C++ 这就是仪器没有显示足够信息的原因吗?

PS我正在使用Xcode 4.3

4

2 回答 2

2

如果对象本身是 C++,请使用分配工具,单击“i”并尝试将配置调整为“识别 C++ 对象”。如果您使用的是 Leaks,我建议您改用 Allocations 和Heapshot analysis。在大多数情况下,我发现它比 Leaks 工具强大得多。

也就是说,dispatch() 方法可能会掩盖信息,这可能与 C++ 无关;在深入到 dispatch() 时,它可能只是对 Instruments 的限制。这有时会发生。

尽管如此 ObjC++ 并不是一种在整个项目中传播的好语言。用纯 C++ 编写你的低级代码。用纯 ObjC 编写您的高级代码。使用 ObjC++ 的薄胶层将它们绑在一起。与纯 C++ 或纯 ObjC 相比,ObjC++ 存在许多问题,从较差的工具支持到运行时性能问题。是胶水;它不是实质。

于 2012-07-19T17:17:38.273 回答
0

最后我发现是什么让仪器无法显示实际的方法调用,不是 Obj C++,我最近更新了开发人员会员资格,我的 iPad 上似乎有 2 个应用程序副本,仪器正在分析每次都是旧的。天哪!

于 2012-07-20T20:05:52.077 回答