Рассмотрим:
typedef void (^select_block_t)(UIView *) ;
(1) @property (copy, nonatomic) select_block_t myBlockProperty ;
(2) @property (strong, nonatomic) select_block_t myBlockProperty ;
(3) @property (assign, nonatomic) select_block_t myBlockProperty ;
и:
(A) self.myBlockProperty = ^(UIView *) {NSLog(@"Hi");} ;
(B) self.myBlockProperty = [^(UIView *) {NSLog(@"Hi");} copy] ;
Я пытаюсь понять, как правильно сопоставить, какое объявление свойства с какой семантикой блочного копирования
Я видел примеры здесь на ТАК это было бы благосклонно к [1:B]
Но потом меня смущает то, насколько избыточна операция 'копирования'. Мое ограниченное понимание состоит в том, что [1:A] должно быть правильным, потому что я хочу блок копируется один раз, когда я назначаю свойство, а не один раз при создании блока, а затем еще раз во время назначения свойства.
[3:B] также имеет смысл согласно моему обоснованию. Итак, что я неправильно понимаю?