//初始化VC
ProductClassViewController *productClassVC = [[ProductClassViewController alloc] init];
productClassVC.delegate = self;
productClassVC.hidesBottomBarWhenPushed = YES;
[[GlobalDataAccess sharedInstance] downProductClassData:PRODUCT_ONEDATA
customID:[FunctHelperClass getClickCustomID]
productClassId:0];//异步请求数据获得数据之后发送消息
[self.navigationController pushViewController:productClassVC animated:YES];
//ProductClassViewController VC中注册观察者
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
//注册通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(loadOneTableView:)
name:PRODUCT_ONEDATA
object:[GlobalDataAccess sharedInstance]];
}
reture self;
}
//执行通知方法
- (void)loadOneTableView:(NSNotification *)userInfo{
NSLog(@“132456”);
}
//移除通知
- (void)dealloc{//移除通知
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
最后结果是我push第一次,结果是打印:
132456
返回之后push第二次,结果打印:
132456
132456
返回之后push第三次,结果打印:
132456
132456
132456
问题1:
之后都是返回,再次push通知方法就会多执行一次,不知道原因,请问各位大神可能这种问题的原因?希望分享给小弟参考一下,感激不尽!
问题2:
就是有时候不执行dealloc方法,这又是为什么呢?
对了小弟用的xcode4.6.2版本。IOS 6.1
希望各位大神能给出指点
更新
在各位大神的指导下上面的问题解决了。
在- (void)viewWillAppear:(BOOL)animated这里面注册通知
在- (void)viewWillDisappear:(BOOL)animated里面移除通知
这样做之后问题又出现了:
现在的问题是:
我在UITabBarController中添加了两个VC1/VC2,两个VC中分有这个。(总共有三个VC:VC1、VC2、VC3);三个VC中均由注册通知和移除通知及这两个方法
- (void)viewWillAppear:(BOOL)animated这里面注册通知
- (void)viewWillDisappear:(BOOL)animated里面移除通知
最开始加载的时VC1、VC2,显示出来的是VC1.我通过点击tabBar到VC2.在VC2中有个button通过button跳转到VC3.然而我在这个时候通过点击tabBar切换到VC1是,就出现了这样的问题:
-[NSNotificationCenter removeObject:]: unrecognized selector sent to instance 0x903e4c0
2013-10-18 11:25:19.567 GOCloud[1494:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNotificationCenter removeObject:]: unrecognized selector sent to instance 0x903e4c0'
不知道什么原因,跟踪代码时发现:在点击VC1这个tabBar时,VC3中的这个方法
- (void)viewWillDisappear:(BOOL)animated里面移除通知
还没有执行,就开始执行VC1中的-
(void)viewWillAppear:(BOOL)animated这里面注册通知
方法了。不知道时什么情况导致的希望哪位大神给点意见,给点思维。
谢谢了