我正在使用基于Apple的UIKit的Objective-C开发iPhone应用程序。
我在UIViewController中创建了一些类实例,发现我的类实例指针随机被破坏。由于类实例指针已损坏,我总是得到这样的EXC_BAD_ACCESS崩溃: 例外类型:EXC_BAD_ACCESS(SIGSEGV) 例外代码:KERN_INVALID_ADDRESS位于0xa095633c 崩溃的线程:0
它表明当我的代码试图访问类实例时,它已经变成了一个荒谬的地址:0xa095633c,它超出了内存空间甚至是二进制图像空间。
有没有任何建议可能导致类实例被破坏的错误编码是什么?
答案 0 :(得分:3)
有很多事情可以导致这种情况。仅举几例:
学习使用调试器和调试日志记录来跟踪无效指针出现的位置和时间。
尝试创建一个可以重现问题的小型测试程序,以便发布代码示例。
答案 1 :(得分:2)
EXC_BAD_ACCESS通常表示内存管理错误。阅读Memory Management Programming Guide并确保您遵守有关alloc / retain / release / etc的所有规则。
答案 2 :(得分:0)
在分配变量时是否尝试保留对象?
一个简单的例子:
variable = [[[UIViewController alloc] init] retain];
另一种解决方案可能是将实例变量声明为属性为“retain”的属性:
@property(nonatomic, retain) UIViewController *variable;
答案 3 :(得分:0)
这种错误的最可能原因是对象过早地被释放,而其他一些内存被写入其位置。尝试打开仪器中的Zombies,它会告诉你是否是这种情况。