gpt4 book ai didi

iphone - NSNotificationCenter postNotificationName exec_badaccess

转载 作者:行者123 更新时间:2023-12-03 19:07:44 25 4
gpt4 key购买 nike

我有一个 View Controller ,当它完成时,我会发布一个通知,并在另一个 View Controller 中包含的 subview 中添加作为观察。但是,当它尝试执行通知后方法时,发生了 exec_bad_access 。怎么了?代码是:

BrandListByIdViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

NSNumber *bid = self.brands[indexPath.row][@"id"];
[self dismissViewControllerAnimated:YES completion:^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"SelectedBrandId" object:nil];
}];

}

SearchNewProduct.h

@interface SearchNewProduct : UIView

@end

SearchNewProduct.m

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didSelectedBrandId::) name:@"SelectedBrandId" object:nil];
}
}

- (void)didSelectedBrandId:(NSNotification *)notif{

NSLog(@"%s", __PRETTY_FUNCTION__);
}

即使我删除了 userInfo,仍然无法访问。我在另一个新项目中创建了类似的情况,效果很好。

最佳答案

我没有意识到您正在处理 UIView 而不是 UIViewController (应该更好地阅读您的问题)。我认为发生的情况是,即使 View 被释放后也会收到通知。确保在 UIView 中调用 dealloc 并将其自身作为观察者移除:

- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}

此外,将 NSLog 放入该 UIViewinitWithFrame 方法中,以查看它是否被多次调用。

这个问题非常相似:

ios notifications to "dead" objects

关于iphone - NSNotificationCenter postNotificationName exec_badaccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15995138/

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