OStack程序员社区-中国程序员成长平台

标题: ios - NSNotificationCenter 使我的应用程序崩溃 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 10:16
标题: ios - NSNotificationCenter 使我的应用程序崩溃

我添加了一个 NSNotificationCenter 观察者,它在两个不同的 View Controller 上调用 2 个同名的选择器。

它可以工作,但是当我运行该应用程序时,它有时会崩溃并显示以下错误消息:

Thread 1: EXC_BAD_ACCESS (code=1, address=0x18)

Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

Image

有人知道它为什么会崩溃吗?谢谢!

.

我的代码:

fetchFromParse:

-(void)sendAllStores
{
    [[NSNotificationCenter defaultCenter]postNotificationName"getStoresArrays" object:nil userInfo:self.storesDict];
}

firstVC.m:

- (void)viewDidLoad {
    [[NSNotificationCenter defaultCenter]addObserver:self selectorselector(getStoresArrays name"getStoresArrays" object:nil];
}

-(void)getStoresArraysNSNotification*)notification
{
    NSLog(@“Working”);  
}

secondVC.m:

-(void)prepareArrays
{
    [[NSNotificationCenter defaultCenter]addObserver:self selectorselector(getStoresArrays name"getStoresArrays" object:nil];
}
-(void)getStoresArraysNSNotification*)notification
{
    NSLog(@“Working”);
}

AppDelegate.m:

- (BOOL)applicationUIApplication *)application didFinishLaunchingWithOptionsNSDictionary *)launchOptions {
    self.secVC=[[secondVC alloc] init];
    [self.secVC prepareArrays];

    fetchFromParse *fetchFromParseObj=[[fetchFromParse alloc] init];
    [fetchFromParseObj getStoresFromParse];

    Return YES;
}



Best Answer-推荐答案


通知崩溃

通常,如果您尝试关闭 View Controller 而不移除观察者,您可能会看到这种性质的崩溃。因此,帕蒂尔先生提供的部分答案是绝对需要的。您的用例会因删除观察者的位置和方式而异。如果您过早删除它,如果您尝试引用任何相关对象,最终可能会崩溃。

因此,您可能想要删除 self.storesDict 对象,或者至少在使用它之前验证它不是 nil。

调试

这是 quick tutorial关于使用 Xcode 进行调试。它适用于旧版本,但它应该让您快速上手。您还可以查看 Apple docs有关收集崩溃日志的更多信息。

日志

您应该转到报告导航器并复制更多日志,以便我们可以更准确地确定问题的原因。您可以在错误代码之前添加断点,然后逐步解决问题。如果没有别的,请复制调试控制台。

获取崩溃日志

你可以打开 Xcode 去 Window 菜单选择 Devices。选择您连接的设备 (iPhone/iPad),然后单击查看设备日志按钮。从列表中选择您的应用名称/崩溃日期。将数据复制到问题中。

更多信息

您提供的有关崩溃的信息越多,我们就越有可能为您提供帮助。我怀疑答案是你要么试图访问零的东西,要么没有在正确的时间释放观察者。当您的 View 消失但您没有提供足够的信息以使其明显时,释放观察者可能不合适。

不同的 View Controller 如何协同工作?您确定是通知导致崩溃吗?在发布通知和每个选择器中放置一个断点,然后调试应用程序直到它崩溃。您将需要确定崩溃之前的条件。如果您在更新问题时告诉我,我会完善此答案。

关于ios - NSNotificationCenter 使我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35039702/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4