考虑:
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:A] 应该是正确的,因为我希望在分配属性时复制一次块,而不是在创建块时复制一次,然后在分配属性时再复制一次。
[3:B] 根据我的理由也是有意义的。那么,我误会了什么?