gpt4 book ai didi

iphone - 获取wifi信息时出现 “EXC_BAD_ACCESS”错误是什么原因?

转载 作者:行者123 更新时间:2023-12-03 20:26:58 26 4
gpt4 key购买 nike

我收到以下错误

Program received signal: “EXC_BAD_ACCESS”.
warning: check_safe_call: could not restore current frame

warning: Unable to restore previously selected frame.
warning: Unable to restore previously selected frame.

我的应用程序是获取wifi信息

libHandle = dlopen("/System/Library/PrivateFrameworks/ MobileWiFi.framework/MobileWiFi",RTLD_LAZY);

open = dlsym(libHandle, "Apple80211Open");
bind = dlsym(libHandle, "Apple80211BindToInterface");
close = dlsym(libHandle, "Apple80211Close");
scan = dlsym(libHandle, "Apple80211Scan");

open(&airportHandle);

bind(airportHandle, @"en0");

当代码到达 open(&airportHandle) 时,我收到错误,但我不确定,因为在这一行它停止了。

我该如何解决这个问题?

最佳答案

对于任何 EXC_BAD_ACCESS 错误,您通常会尝试向已释放的对象发送消息。追踪这些的最佳方法是使用 NSZombieEnabled .

这是通过从不实际释放对象来实现的,而是通过将其包装为“僵尸”并在其中设置一个标志来表示它通常会被释放。这样,如果您尝试再次访问它,它仍然知道您犯错误之前的情况,并且通过这一点信息,您通常可以回溯以查看问题所在。

当调试器有时无法获取任何有用信息时,它在后台线程中尤其有用。

非常重要的是要注意,但是,您需要 100% 确保这仅在您的调试代码中,而不是您的分发代码中。因为没有任何东西被发布,所以你的应用程序将会泄漏、泄漏、泄漏。为了提醒我这样做,我将此日志放入我的应用程序委托(delegate)中:

if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled"))
NSLog(@"NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");

如果您需要帮助找到确切的行,请执行“构建并调试”(CMD-Y),而不是“构建并运行”(CMD-R)。当应用程序崩溃时,调试器将准确地显示哪一行,并结合 NSZombieEnabled,您应该能够找出确切的原因。

关于iphone - 获取wifi信息时出现 “EXC_BAD_ACCESS”错误是什么原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1727417/

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