私は2つのクラスを持っています:
クラスA:
NSNotification
名前付きのオブザーバーとして登録されましたnotificationName
.h ファイル宣言 -typedef void (^block1)(NSError *error);
プライベート インスタンス変数 -block1 _block1_obj;
次に、次のような 2 つの方法があります。
- (void) doSomethingWithCompletionHandler:(block1)handlerBlock
{
_block1_obj = handlerBlock; // Also tried _block1_obj = [handlerBlock copy];
[classB_obj doAnotherThing];
}
- (void) notificationHandler:(NSNotification *)notification
{
...
_block1_obj(error);
}
クラス B:
- (void) doAnotherThing
{
...
[[NSNotificationCenter defaultCenter] postNotificationName:notificationName
object:nil
userInfo:dict];
}
_block1_obj
デバッグ中に、値が割り当てられていることがわかりまし
たdoSomethingWithCompletionHandler
しかし、しばらくして制御が notificationHandler: に来ると
_block1_obj
、nil
.
これがなぜなのかわかりません。誰でも説明できますか?
更新:copy
属性を使用してプロパティを作成しようとしましたが、うまくいきませんでした。