声明为extern的NSMutableString对象的问题

时间:2011-04-27 22:01:46

标签: objective-c nsmutablestring

在我的应用程序中,我需要将NSMutableString从一个类传递到另一个类,所以我把它放在extern。问题是,当我运行应用程序时,该类只访问字符串一次,第二次应用程序崩溃!显然,NSMutablString在第一次访问后就没有了。所以我试图找出一些东西:我将字符串转换为C字符。那么这次应用程序不会崩溃,但是...每次调用它时char的值都会改变! 我真的很困惑:我需要知道

  1. 有没有办法维护NSMutablString的值,以便每次类调用它时都可用?
  2. 导致char值变化的原因是什么?
  3. 感谢您的帮助

1 个答案:

答案 0 :(得分:1)

听起来你真的在做一些奇怪的事情。

  • 如果要将NSMutableString实例从一个对象(源)传递到另一个(目标),则应将其分配给目标对象的属性,或通过某种方法调用传递它。

    < / LI>
  • 目标对象应保留此实例(显式或使用属性的“retain”标志),以确保实例无论源对象的作用是什么都有效。当不再需要时,目标对象也应该释放它,否则会引入内存泄漏。

  • “NSMutableString(指针)变为零”并不是很明显。任何无效的引用都可能在取消引用时导致崩溃,而不仅仅是nil。实际上,我的猜测是你正在尝试访问已删除的对象。

  • 我猜你已经使用[NSMutableString cStringUsingEncoding:]或类似方法来获取char指针。请记住,返回的指针在有限的时间内有效,请查看文档。

无论如何,这都是非常基本的东西。你应该阅读Memory Management Progamming Guide并确保你理解一切。开发稳定的Objective-C代码至关重要。