1
例如,如果我有一個函數排序()像這樣:如何知道Iphone上Objective C中變量的類型?
+ (void) sort: (id) a { if(typeof(a) == 'NSArray') { ... } }
那麼,有沒有目標C爲iPhone任何可以替代的typeof()的走,這樣我可以檢測事先什麼樣的變量我在處理?
例如,如果我有一個函數排序()像這樣:如何知道Iphone上Objective C中變量的類型?
+ (void) sort: (id) a { if(typeof(a) == 'NSArray') { ... } }
那麼,有沒有目標C爲iPhone任何可以替代的typeof()的走,這樣我可以檢測事先什麼樣的變量我在處理?
[a isKindOfClass:[NSArray class]]
想到泉水。
我也想指出,雖然在你的情況下,它更有意義,只需輸入方法的參數,而不是採取ID和檢查它的類型,即
+ (void)sort:(NSArray *)a
的NSObject
協議具有比較方法是你會感興趣的。
感謝您的提示。我打算傳遞各種對象,例如NSArray,NSMutableArray,NSDictionary,NSMutableDictionary等,並根據類型進行操作。 – kumar 2010-09-29 11:12:23
這是有道理的,但要警告它往往是一個弱設計的症狀。 – 2010-09-29 16:29:25