0

在我的应用程序中,我需要将 NSMutableString 从一个类传递到另一个类,所以我把它放在外部。问题是当我运行应用程序时,该类只访问一次字符串,第二次应用程序崩溃!显然 NSMutablString 在第一次访问后变为 nil 。所以我试图弄清楚一些事情:我将字符串转换为 C 字符。好吧,这次应用程序没有崩溃,但是......每次我调用它时,char 的值都会改变!我真的很困惑:请我需要知道

  1. 有什么方法可以维护 NSMutablString 的值,以便每次类调用它时都可以使用它?
  2. 是什么导致 char 的值发生变化?

谢谢你的帮助

4

1 回答 1

1

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

  • 如果你想将 NSMutableString 实例从一个对象(源)传递到另一个(目标),你应该将它分配给目标对象的属性,或者通过一些方法调用传递它。

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

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

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

无论如何,这都是非常基本的东西。您应该阅读内存管理编程指南并确保您了解所有内容。开发一个稳定的 Objective-C 代码是非常必要的。

于 2011-04-27T22:27:34.353 回答