2015-02-05 4 views
0

Ниже приведен код, чтобы связать дополнительные значения с помощью кнопкиobjc_getAssociatedObject возвращает неверное значение

- (int)uniqueId 
{ 
    return (int)objc_getAssociatedObject(self, uniqueIdStringKeyConstant); 
} 

- (void)setUniqueId:(int)uniqueId 
{ 
    objc_setAssociatedObject(self, uniqueIdStringKeyConstant, [NSNumber numberWithInt:uniqueId], OBJC_ASSOCIATION_ASSIGN); 
} 

Когда я пытаюсь получить значение из uniqueId он возвращает неверное значение.

[button1 setUniqueId:1]; 
NSLog(@"%d",[button1 uniqueId]); // in console it prints 18 

Может ли кто-нибудь помочь мне узнать, что я делаю неправильно?

ответ

2

Вы отливку NSNumber непосредственно к int, который вернет вам значение указателя адреса объекта.

Что вы хотите сделать, это:

return [(NSNumber *)objc_getAssociatedObject(self, uniqueIdStringKeyConstant) intValue]; 
+0

Thanx братан это работа ... –

2

Вы храните NSNumber, а затем лидируете его до int. Вы не можете этого сделать - кастинг не меняет тип данных.

Попробуйте это:

- (int)uniqueId 
{ 
    NSNumber *number = objc_getAssociatedObject(self, uniqueIdStringKeyConstant); 
    return number.intValue; 
} 
+0

Thanx братан это работа ... –

Смежные вопросы