你好我在app delegate.m的方法中分配nsnotifiaction,这个方法每隔30秒调用一次eprox,我想在viewcontroller adn执行方法中通知它, 这是我的appdelegate .m代码
- (void)layoutAnimated:(BOOL)animated{
BOOL yy= self.bannerView.bannerLoaded;
if (yy==1){
self.iAdString=[NSMutableString stringWithString:@"1"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"BannerViewActionWillBegin" object:self];
}
else{
self.iAdString=[NSMutableString stringWithString:@"0"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"BannerViewActionDidFinish" object:self];
}
}
并在viewcontroller.m
中//我在viewdidload方法中定义
- (void)viewDidLoad{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willBeginBannerViewActionNotification:) name:@"BannerViewActionWillBegin "object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishBannerViewActionNotification:) name:@"BannerViewActionDidFinish" object:nil];
}
它的方法是......
- (void)willBeginBannerViewActionNotification:(NSNotification *)notification{
[self.view addSubview:self.app.bannerView];
NSLog(@"come");
}
- (void)didFinishBannerViewActionNotification:(NSNotification *)notification {
NSLog(@"come");
[self.app.bannerView removeFromSuperview];
}
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
在appdelegate文件中读取方法时,我没有得到超出方法的响应。
请帮帮我。
答案 0 :(得分:4)
您有拼写错误。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willBeginBannerViewActionNotification:) name:@"BannerViewActionWillBegin "object:nil];
//Your error here-------------------------------------------------------------------------------------------------------------------------------------^
你在那里放了一个空间。
SideNote:对于所有通知名称,您应该/可以创建单独的文件并将所有通知名称作为常量字符串。
const NSString *kBannerViewActionWillBegin=@"BannerViewActionWillBegin";
这将更容易改变价值,并且不会发生这样的拼写错误。
答案 1 :(得分:0)
从你的代码我得到的是除了通知名称之外的所有其他东西都没问题,你是否检查了通知是否被解雇了。尝试在通知点火线处保留断点。