2016-03-21 18 views
0

Ich habe eine Kopie Eigenschaft UITableViewCell mit Kategorie hinzugefügt, wie untenWie kann man die Copy-Eigenschaft freigeben, die mit der Kategorie in Ziel C hinzugefügt wurde?

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 

Wie würde ich klar Speicher (release), diese Eigenschaft, wie ich kann nicht overite dealloc Methode dafür gezeigt.

Ich freue mich über jede Hilfe zu diesem Thema. Vorschläge für die beste Möglichkeit, einer vorhandenen Klasse eine Eigenschaft hinzuzufügen, ohne eine Unterklasse zu erstellen.

Antwort

2

ein zugeordnetes Objekt mit einer starken Verweise zugehörigen Objekt Richtlinie festgelegt (OBJC_ASSOCIATION_RETAIN, OBJC_ASSOCIATION_RETAIN_NONATOMIC, OBJC_ASSOCIATION_COPY oder OBJC_ASSOCIATION_COPY_NONATOMIC) automatisch freigegeben werden, wenn ein neuer Wert gesetzt (oder nil gesetzt löschen) für den gleichen Schlüssel, oder wenn Das übergeordnete Objekt wird freigegeben, genau wie bei retain/copy Eigenschaften oder mit einer starken Referenz in ARC.