我有兩個類,A類和B類。在一個課程中完成操作時發送通知?
A類有一個方法
-(void)methodA:(id)sender
{
}
和B類有一個方法
-(void)methodB:(id)sender
{
}
現在我有一些工作是發生在methodA,所以一旦完成,我想從methodA發送一個通知到methodB:所以我可以做一些基於通知的操作。
那麼我該如何做到這一點?任何人都可以引導我,因爲我是obj-c的新手?
我有兩個類,A類和B類。在一個課程中完成操作時發送通知?
A類有一個方法
-(void)methodA:(id)sender
{
}
和B類有一個方法
-(void)methodB:(id)sender
{
}
現在我有一些工作是發生在methodA,所以一旦完成,我想從methodA發送一個通知到methodB:所以我可以做一些基於通知的操作。
那麼我該如何做到這一點?任何人都可以引導我,因爲我是obj-c的新手?
使用委託。從維基簡單的代碼:訪問http://en.wikipedia.org/wiki/Delegation_pattern
最簡單的方法。
在B類的-(id)initWithNibName: Bundle:
中,您需要添加註冊NSNotifications。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(methodB:)
name:@"methodAFinished"
object:nil];
}
return self;
}
然後你需要做的的A類的了methodA如下:功能。
- (void)methodA:(id)sender {
// Once you have completed your actions do the following
[[NSNotificationCenter defaultCenter] postNotificationName:@"methodAFinished" object:nil];
}
- (void)methodB:(id)sender {
// This will then be called in the other class, do whatever is needed in here.
}
希望對你有用!
另外,別忘了,在B類的-(void)viewDidDisappear:animated
函數中,您需要取消註冊通知。
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
這應該完成你所要求的。請加上您的問題,如果這不是你正在工作或評論下面,我可以糾正我的答案。
註冊在B類觀察員,如:
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(method:) name:@"notificationName" object:nil];
與後從類的通知。類似的:
[NSNotificationCenter defaultCenter] postNotificationName:@"notificationname" object:nil];
在B類取出觀察,當它被釋放像
[[NSNotificationCenter defaultCenter]removeObserver:self];
可能重複的[如何發送和通過NSNotificationCenter在Objective-C接收消息?](http://stackoverflow.com/questions/2191594/how-to-send-and-receive-message-through- nsnotificationcenter合目標c) – Caleb 2012-02-23 23:07:24