2010-06-17 97 views
13

比方說,在Apple API版本1.0中,有一個帶有屬性'color'的類NSFoo。 API 1.1添加屬性「大小」。你怎麼知道一個NSObject是否有某個屬性?

我想知道我是否可以使用,吸氣:myFoo.size

[myFoo respondsToSelector:@selector(的getSize)不能按預期工作。

找出對象是否有屬性的正確方法是什麼?謝謝!

回答

36

你很近。您的選擇器應該完全是您要發送給對象的消息:

if ([myFoo respondsToSelector:@selector(size)]) { 
    int size = [myFoo size]; // or myFoo.size in dot-notation. 
    // ... 
} 

應該工作。

+5

應該指出的是,這是因爲屬性的默認getter省略了'get'前綴。不同於具有'set'前綴的setter。 – Senseful 2010-06-17 05:25:30

+0

哈哈,哎呀。謝謝! – strawtarget 2010-06-17 15:40:25

+0

我該如何做到這一點呢?如果我想在Foo上設置尺寸? myFoo不知道類屬性,所以我無法訪問大小。 – 2015-01-12 18:06:58

相關問題