Иногда я сталкиваюсь с методами 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, так и без?