作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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
放入该 UIView
的 initWithFrame
方法中,以查看它是否被多次调用。
这个问题非常相似:
关于iphone - NSNotificationCenter postNotificationName exec_badaccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15995138/
我有一个 View Controller ,当它完成时,我会发布一个通知,并在另一个 View Controller 中包含的 subview 中添加作为观察。但是,当它尝试执行通知后方法时,发生了
我是一名优秀的程序员,十分优秀!