2015-02-05 92 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

你直接投NSNumberint,這將返回對象的指針地址的值。

你想要做什麼:

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

感謝名單兄弟它的工作... – 2015-02-05 17:26:16

2

您正在存儲NSNumber,然後將其轉換爲int。你不能這樣做 - 鑄造不會改變數據類型。

試試這個:

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

感謝名單老兄它的工作... – 2015-02-05 17:24:23