偶爾,開發/調試過程中,我希望確保對象是某一類型:嚴格的類型檢查在Objective-C通過宏
PageTopBottom *newPage = [notification object];
assert([newPage isKindOfClass:[PageTopBottom class]]);
我已經工作到這個
#define assertType(_var_, _class_) assert([_var_ isKindOfClass:[_class_ class]])
和
PageTopBottom *newPage = (id)[notification object];
assertType(newPage, PageTopBottom);
,但現在我想,如果可能的話,只需要使用
assertType(newPage)
是否有可能從變量中獲取有關變量聲明類型的信息?
我不是很積極,我正確地構思了問題,但任何答案讓我能夠assertType與一個參數將是偉大的。
太棒了,謝謝。我現在至少會將我的宏更改爲「ASSERT_IS_KIND_OF_CLASS」。如果可能的話,我不想混淆該聲明,因爲一旦不再需要聲明,我將刪除它。 –
嗨,讓我知道如果你認爲我應該打開一個單獨的問題:如果問題是比較參數和方法的簽名怎麼辦?換句話說,做一個嚴格的打字參數檢查... –
@Yar:是的,單獨的問題,我認爲。 – JeremyP