2011-12-08 9 views
0

私は目的cに割り込み可能なフックを作成する必要があります。割り込み可能なフックは、いずれかのフックコールバックが操作を中断した場合、操作を中止する機能を持つ必要があります。私はそのようなためNSNotificationCenterを使用するのではと思った:通知のユーザー情報を変更することが許可されました

NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; 
[userInfo setObject: [NSNumber numberWithBool: NO] forKey: @"interrupted"]; 
[notificationCenter postNotificationName: @"Operation A will happen" 
            object: self userInfo:userInfo]; 
if(![[userInfo objectForKey: @"interrupted"] boolValue]) 
{ 
    [self doOperationA]; 
} 

とフック側の

-(void) operationAWillHappen: (NSNotification *) note 
{ 
    if(someCondition) 
     [(NSMutableDictionary *)note.userInfo setObject: 
     [NSNumber numberWithBool: YES] forKey: @"interrupted"]; 
} 

私はそのようなユーザー情報を変更させて頂いておりますか!客観的なCで割り込み可能なフックを実装する良い方法はありますか?

答えて

0

これは完全に安全ではないため、アプリをクラッシュさせるとおそらくクラッシュします。

あなたが探しているのは "delegate or delegation pattern"です。

0

私の推測では動作するが、APIは不変なオブジェクトなので、あなたはそうではない。それが今日働くことが起これば、それは壊れる可能性があります。

あなたはいつも辞書に自己を渡し、リスナーにメッセージを送ることができます。

(私はあなたが任意の数のリスナーを持つことができるという事実を利用したいと考えています - 委譲ははるかに簡単ですが、デリゲートは1つだけです)

関連する問題