2016-04-20 7 views
1

Kann ich irgendwie Parameter des Typs SEL mit objc_setAssociatedObject verwenden, ohne es in NSString-Typ zu konvertieren?Wie Selektor (SEL) mit Objc_setAssociatedObject verwenden?

Derzeit verwende ich diesen Code: objc_setAssociatedObject(thirdPartyObject, &kSelectorKey, NSStringFromSelector(selector), OBJC_ASSOCIATION_RETAIN);

Umstellung auf NSString funktioniert, aber in fühlt sich falsch an. Es muss eine geeignetere Lösung geben.

Antwort

0

OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)

Der dritte Parameter muss ein Objekttyp sein. Also, ja, du brauchst diese Umwandlung.

+0

underlaying Art von SEL const char * importieren zu ersetzen. Technisch ist es const void *. Aber es kann nicht beibehalten werden, weil es keine ISA hat. in iOS 9.2 id wie 'OBJC_EXPORT Leere objc_setAssociatedObject definiert (id Objekt, const void * Schlüssel, ID-Wert, objc_AssociationPolicy Politik) __OSX_AVAILABLE_STARTING (__ MAC_10_6, __IPHONE_3_1);', übrigens – Krypt

+1

Sorry, reagiert Stackoverflow auf seltsame Weise auf "Enter" drücken Sie. So, als ob du recht hast. – Krypt

0

Versuchen Sie dies.
In meinem Beispiel i bestanden haben indexpath Sie haben mit Ihrem para Meter müssen Sie

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    yourCustomeCell *aCell; 
    NSString *aStrIdentifier = @"yourIdentiFier"; 
    aCell = (yourCustomeCell *)[tableView dequeueReusableCellWithIdentifier:aStrIdentifier]; 

    //you have to set your indexpath 
    objc_setAssociatedObject(aCell.btnUpload_or_Add, @"objBtn", indexPath, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 
    [aCell.YourButton addTarget:self action:@selector(yourButtonActiontapped:) forControlEvents:UIControlEventTouchUpInside]; 

    return aCell; 
} 

-(IBAction)yourButtonActiontapped:(UIButton *)sender{ 

    NSIndexPath *aIndPath = objc_getAssociatedObject(sender, @"objBtn"); 
    NSLog(@"row:%@",aIndPath.row); 
} 

auch #import <objc/runtime.h>

Verwandte Themen