您好我有一個奇怪的問題,NSNotificationCenter將無法運行選擇方法
在我MainViewController I類職位時曾經按鈕按下得到通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"step" object:nil];
在課堂上它我有一個觀察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(step) name:@"step" object:nil];
它運行「step」方法
- (void)step {
NSLog(@"works");
}
,並在名爲Slide1ViewController我有一個觀察者以及
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
NSLog(@"works 2");
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(step) name:@"step" object:nil];
}
return self;
}
和dealloc方法另一個類中刪除
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"step" object:nil];
}
在MainViewController的方法被調用,但從來沒有在Slide1ViewController中。
的Slide1ViewController被初始化這樣的:
Slide1ViewController*test = [[Slide1ViewController alloc] initWithNibName:@"Slide1ViewController" bundle:nil];
test.view.frame = CGRectMake(1024*0, 0, 1024, 768);
[contentScrollView addSubview:test.view];
當發送通知時,您確定Slide1ViewController在內存中嗎? – dasdom 2012-07-27 11:26:08
你在'Slide1ViewController'中實現了'step'方法嗎? – trojanfoe 2012-07-27 11:27:24
如何初始化您的Slide1ViewController對象?我猜你沒有使用[Slide1ViewController alloc] initWithNibName:function。我想你只是使用init函數。你可以發佈你分配「Slide1ViewController」的代碼嗎? – Srikanth 2012-07-27 11:27:46