我看到有人通過按鈕的標籤傳遞參數,如下所示。 這怎麼可能工作?這樣做是否安全?通過按鈕的標籤傳遞參數objective-c
NSCustomClass* cls = [[NSCustomClass alloc] init:@"",@"",@""];
[button setTag:(int) cls];
- (void)OnClick:(id)sender
{
NSCustomClass* cls = (NSCustomClass*)[sender tag];
// to do something with the "cls".
[cls release];
}
事實上,我沒有得到奇怪的結果。
它通過傳遞像'NSString','NSArray'這樣的參數可以正常工作。
你能告訴我爲什麼這是一個壞主意嗎?
+1將自定義類投射到NSInteger的可怕想法。 – Saphrosit 2012-01-13 03:08:50
詳細說明,這是可行的,因爲NSInteger與任何給定平臺上的C指針大小相同。無論如何,壞主意是因爲如果你釋放對象,按鈕標籤將成爲一個指向無處的指針。 – Costique 2012-01-13 05:28:08