我一直在使用Objective-C,并试图故意让EXC_BAD_ACCESS崩溃。有哪些可靠的方法来实现这一目标?
我读到Whenever you encounter EXC_BAD_ACCESS, it means that you are sending a message to an object that has already been released
。短语"向对象发送消息"是什么意思?
我试图实现崩溃但没有成功的东西:
__weak NSMutableArray *array;
NSLog(@"%@", array)
[array insertObject:@2 atIndex:0];
NSLog(@"%@", array.firstObject)
答案 0 :(得分:1)
您要将insert:atIndex:
发送给array
。
代码不会崩溃,因为在Objective-C中,它允许向nil
发送消息。
array
是nil
,因为它已声明但未初始化(尚未)。
您可以通过使用assign
attibute声明对象属性来重现崩溃
@property (assign) NSMutableArray *array;
然后创建一个方法
- (void)insertSomething {
self.array = [NSMutableArray array];
[self.array insertObject:@2 atIndex:0];
}
并将其命名为
[self insertSomething];
NSLog(@"%@", self.array.firstObject);
由于assign
属性array
是一个弱引用,并在离开insertSomething
方法后立即释放。