Используя NSBlockOperation в методах Objective- C, которые используют шаблон цели / селектора для обратных вызовов? - PullRequest
0 голосов
/ 19 февраля 2020

Иногда я сталкиваюсь с методами Objective- C, которые используют шаблон цели / селектора только для обратных вызовов в ситуациях, когда было бы намного проще использовать блок. Один пример приведен в NSDistributedNotificationCenter:

[[NSDistributedNotificationCenter defaultCenter] addObserver:observer
                                                    selector:@selector(method)
                                                        name:@"name"
                                                      object:nil
                                   suspendedDeliveryBehavior:NSNotificationSuspensionBehaviorDrop];

. Он не предоставляет соответствующий метод, который вместо этого принимает блок. Поэтому в подобных ситуациях я часто использую NSBlockOperation в качестве цели:

[[NSDistributedNotificationCenter defaultCenter] addObserver:[NSBlockOperation blockOperationWithBlock:^{
                                                                 // do something
                                                             }]
                                                    selector:@selector(main)
                                                        name:@"name"
                                                      object:obj
                                   suspendedDeliveryBehavior:NSNotificationSuspensionBehaviorDrop];

Безопасно ли использовать NSBlockOperation таким образом?

Например, является ли экземпляр NSBlockOperation гарантированно сохраняется до тех пор, пока это необходимо, как при компиляции с AR C, так и без?

...