свойство копирования и блок_копировать(мойблок)/ [копия моего блока]

Рассмотрим:

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] также имеет смысл согласно моему обоснованию. Итак, что я неправильно понимаю?

7
задан Community 23 May 2017 в 12:20
поделиться