2012-12-07 24 views
1

可能重複:
How to detect a property return type in Objective-C有什麼方法可以在Objective-C中獲取屬性類型?

有什麼辦法在Objective-C得到一個屬性的類型?我可以訪問屬性是這樣的:

objc_property_t* properties = class_copyPropertyList(cl, &count); 

,並獲得名字是這樣的:

property_getName(properties[i]); 

我需要,雖然做的就是類型。此外,在大多數情況下,該值將爲nil,因此我不能只獲取調用​​3210的值。

+0

請參閱:http://stackoverflow.com/questions/769319/how-to-detect-a-property-return-type-in​​-objective-c;還要注意,找到你要找的東西的好關鍵字是:objective-c反射內省 – magma

+1

使用'property_getAttributes(properties [i])' – iDev

+1

還要注意,Objective-C的設計目的不是爲了支持這個級別的運行時動態行爲。在設計一個能夠在代碼中正式API中捕獲所需動態的系統(而不是構建諸如@proeprty或@編碼生成的元數據之類的東西)之前,通常要好得多。 – bbum

回答

4

不是因爲你似乎在問 - 在Objective-C類中是無類型的;當處理超出「它是一個類」的非C類型時,屬性的類型在運行時不知道。這就是爲什麼如果你做一些愚蠢像一個視圖控制器以下:

[self setValue:@3 forKey:@"view"]; 

你會看到當控制器嘗試發送到NSNumber視圖消息,而不是由鍵 - 值編碼機制異常升高因爲您試圖將不屬於視圖的內容放入不適當的屬性中。

解析property_getAttributes將允許您從Objective-C對象類型中區分各種C文字類型。

相關問題