簡體   English   中英

聲明兩個屬性,並使用相同的鍵調用objc_setAssociatedObject

[英]declare two property and call objc_setAssociatedObject with same key

在UIButton .h文件類別中:

@interface UIButton (zz)
@property (nonatomic,strong) NSString *param1;
@property (nonatomic,strong) NSString *param2;
@end

在UIButton .m文件類別中:(注意:所有鍵均為0)

@implementation UIButton (zz)
@dynamic param1;
@dynamic param2;

-(void)setParam1:(NSString *)param1{
     objc_setAssociatedObject(self, 0, param1, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(NSString*)param1{
    return (NSString *)objc_getAssociatedObject(self, 0);
}

-(void)setParam2:(NSString *)param2{
    objc_setAssociatedObject(self, 0, param2, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(NSString*)param2{
    return (NSString *)objc_getAssociatedObject(self, 0);
}

@end

下面是測試代碼:

....
....
UIButton *b1 = [UIButton buttonWithType:UIButtonTypeCustom];
UIButton *b2 = [UIButton buttonWithType:UIButtonTypeCustom];

b1.param1 = @"b1 1111";
b1.param2 = @"b1 2222";

b2.param1 = @"b2 1111";
b2.param2 = @"b2 2222";

NSLog(@"b1 param1=%@ param2=%@",b1.param1,b1.param2);
NSLog(@"b2 param1=%@ param2=%@",b2.param1,b2.param2);

輸出結果:

2013-04-08 11:30:52.258 zazis[928:c07] b1 param1=b1 2222 param2=b1 2222
2013-04-08 11:30:52.259 zazis[928:c07] b2 param1=b2 2222 param2=b2 2222

我想知道為什么對於相同的鍵是正確的??? 謝謝。

看這里

您為兩個參數使用了具有相同鍵的objc_getAssociatedObjectobjc_setAssociatedObject ,因此它們設置/獲取相同的對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM