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];
Вы храните NSNumber
и затем приведем его к int
, Вы не можете этого сделать - приведение не меняет тип данных.
Попробуй это:
- (int)uniqueId
{
NSNumber *number = objc_getAssociatedObject(self, uniqueIdStringKeyConstant);
return number.intValue;
}