【问题标题】:ARC is trying to retain invalid memoryARC 试图保留无效内存
【发布时间】:2012-12-24 19:12:17
【问题描述】:

所有, 框架调用 objc_retain 时会引发 EXC_BAD_ACCESS 异常。任何追踪问题的帮助或提示将不胜感激。如果我应该提供更多代码,请告诉我。

问题领域:

- (SCUuidNode*)addUUIDNode:(NSString*)uuid
{
    const char *uuidCStr = [uuid cStringUsingEncoding:NSASCIIStringEncoding];
    SCUuidNode *uuidNode = [[SCUuidNode alloc] initWithNode:create_uuid_node(uuidCStr)];
    composite_node_append_child((Node*)[self node], [uuidNode node]);

    return uuidNode; # Exception is being thrown right around here.
}

...

Composite *paymentNode = [SCCompositeNode createPriceNode:^(SCCompositeNode *cnode) {
    SCUuidNode *uuidNode = [cnode addUUIDNode:buyerDeviceId];
    SCIntNode *buyerIdNode = [cnode addIntNode:[buyerUserId integerValue]];
}];

【问题讨论】:

  • 产品 -> 编辑方案 -> 诊断,在内存管理部分中启用僵尸对象的复选框
  • 我不确定...但是为什么使用char *不能使用nsstring
  • 是的,我明白了,如果你使用 nsstring,那么 ARC 会正常工作吗?
  • 谢谢大家,这对我很有帮助,而且当我有更多时间时,它似乎可以帮助我更好地追踪它。
  • 这里还有更多内容。 initWithNode:...是如何实现的?

标签: objective-c ios automatic-ref-counting


【解决方案1】:

正如 rob 和 Space Dust 友好地指出的那样,添加僵尸有助于追踪初始化程序的内存错误。

【讨论】:

    猜你喜欢
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    相关资源
    最近更新 更多