在我的应用程序中,我需要将NSMutableString从一个类传递到另一个类,所以我把它放在extern。问题是,当我运行应用程序时,该类只访问字符串一次,第二次应用程序崩溃!显然,NSMutablString在第一次访问后就没有了。所以我试图找出一些东西:我将字符串转换为C字符。那么这次应用程序不会崩溃,但是...每次调用它时char的值都会改变! 我真的很困惑:我需要知道
感谢您的帮助
答案 0 :(得分:1)
听起来你真的在做一些奇怪的事情。
如果要将NSMutableString实例从一个对象(源)传递到另一个(目标),则应将其分配给目标对象的属性,或通过某种方法调用传递它。
< / LI>目标对象应保留此实例(显式或使用属性的“retain”标志),以确保实例无论源对象的作用是什么都有效。当不再需要时,目标对象也应该释放它,否则会引入内存泄漏。
“NSMutableString(指针)变为零”并不是很明显。任何无效的引用都可能在取消引用时导致崩溃,而不仅仅是nil。实际上,我的猜测是你正在尝试访问已删除的对象。
我猜你已经使用[NSMutableString cStringUsingEncoding:]或类似方法来获取char指针。请记住,返回的指针在有限的时间内有效,请查看文档。
无论如何,这都是非常基本的东西。你应该阅读Memory Management Progamming Guide并确保你理解一切。开发稳定的Objective-C代码至关重要。