gpt4 book ai didi

ios - 如何在一般情况下重现 EXC_BAD_ACCESS

转载 作者:行者123 更新时间:2023-11-29 11:48:04 24 4
gpt4 key购买 nike

我一直在玩 Objective-C,并试图有目的地让 EXC_BAD_ACCESS 崩溃。有哪些确定的方法可以实现这一目标?

我读到每当遇到 EXC_BAD_ACCESS 时,就意味着您正在向已释放的对象发送消息。 “向对象发送消息”这个短语是什么意思?

我试图实现崩溃但没有成功的东西:

 __weak NSMutableArray *array;
NSLog(@"%@", array)
[array insertObject:@2 atIndex:0];
NSLog(@"%@", array.firstObject)

最佳答案

您正在将 insert:atIndex: 发送到 array

代码不会崩溃,因为在 Objective-C 中它允许向 nil 发送消息。

arraynil 因为它已声明但尚未初始化(尚未)。


您可以通过使用assign 属性声明对象属性来重现崩溃

@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 方法后立即被释放。

关于ios - 如何在一般情况下重现 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42469108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com