• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - NSNotificationCenter 使我的应用程序崩溃

[复制链接]
菜鸟教程小白 发表于 2022-12-12 10:16:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我添加了一个 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap