2016-03-21 10 views
0

目的Cのカテゴリを使用してコピープロパティを追加する方法は?

NSString const *key = @"CellSelectedBlockKey"; 

@interface UITableViewCell (CellSelectionBlock) 
@property (nonatomic, copy) CellSelectedBlock cellSelectedBlock; 
@end 

@implementation UITableViewCell (CellSelectionBlock) 

- (void)setCellSelectedBlock:(void(^)(UITableView *table, NSIndexPath *indexpath))cellSelectedBlock 
{ 
    objc_setAssociatedObject(self, &key, cellSelectedBlock, OBJC_ASSOCIATION_COPY_NONATOMIC); 
} 

- (CellSelectedBlock)cellSelectedBlock 
{ 
    return objc_getAssociatedObject(self, &key); 
} 
@end 

どのように明確なメモリ(リリース)、このプロパティ私はこのためoverite deallocメソッドではないことができますようにでしょう以下のように私は、カテゴリを使用してのUITableViewCellにコピープロパティを追加しました。

私はこれに関する助けを感謝します。サブクラス化せずに既存のクラスにプロパティを追加する最良の方法に関する提案。

答えて

2
新しい値が設定されている(又は nilをクリアするように設定されている)は、同じキーの場合、強い参照関連オブジェクト・ポリシー( OBJC_ASSOCIATION_RETAINOBJC_ASSOCIATION_RETAIN_NONATOMICOBJC_ASSOCIATION_COPY、又は OBJC_ASSOCIATION_COPY_NONATOMIC)で設定関連付けられたオブジェクトが自動的に解放される

、又は親オブジェクトは、retain/copyのプロパティと同様に割り当てが解除されます。または、ARCでの強い参照が設定されています。

関連する問題