我处于一个奇怪的困境。我有一个clsA类,它有一些方法。我在其他类中创建ClsA的实例并访问clsA的方法。我已经在头文件中声明了clsA的对象,并且同时写这两行。内存意外释放
clsAobj = [[clsA alloc] init];
[clsAobj someemethod];
的问题是,虽然第1行的执行之后调试调试器显示内存分配给clsAobj但第二线的执行之后,所分配的存储器丢失和变为0x0。访问ClsA的任何方法时都是如此。
有人能帮助我了解这个难题吗?谢谢 。
我处于一个奇怪的困境。我有一个clsA类,它有一些方法。我在其他类中创建ClsA的实例并访问clsA的方法。我已经在头文件中声明了clsA的对象,并且同时写这两行。内存意外释放
clsAobj = [[clsA alloc] init];
[clsAobj someemethod];
的问题是,虽然第1行的执行之后调试调试器显示内存分配给clsAobj但第二线的执行之后,所分配的存储器丢失和变为0x0。访问ClsA的任何方法时都是如此。
有人能帮助我了解这个难题吗?谢谢 。
很难说没有看到clsA和someemethod是如何实现的。我最好的猜测是clsA的init或alloc方法返回nil(在第一行之后使clsAobj为零,而不是第二行),但是没有看到更多的代码,它会给你提供更详细的反馈会很困难。
您是否正在调试优化代码?这可以解释你所看到的;编译器已经对参考进行了优化,因为它不再需要。
或者,您的return self
在您的init
方法?
你的init方法是什么?你需要把更多的细节放在关于clsA的类中。 – Ben 2010-10-13 01:11:48