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;
}
Другие вопросы по тегам