2010-06-17 12 views
13

Apple API sürüm 1.0'da diyelim, bir 'renk' özelliğine sahip bir sınıf NSFoo var. API 1.1, 'boyut' özelliğini ekler.NSObject'in belirli bir özelliği olup olmadığını nasıl anlayabilirsiniz?

ben getter kullanıp kullanamayacağını bilmek istiyorum: beklendiği gibi çalışmaz:

[@selector (getSize) myFoo respondsToSelector] myFoo.size.

Nesnenin bir özelliği olup olmadığını öğrenmek için doğru yol nedir? Teşekkürler!

cevap

36

Kapa çeneni.

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

çalışması gerekir: Sizin seçici nesneye göndermek istediğiniz tam olarak mesaj olmalıdır.

+5

Bunun nedeni, özelliklerin varsayılan alıcılarının 'get' önekini içermemesidir. 'Set' önekine sahip olan setterlerden farklı olarak. – Senseful

+0

Haha, oops. Teşekkürler! – strawtarget

+0

Bunu başka şekilde nasıl yapabilirim? Foo'da boyut ayarlamak istiyorsam? myFoo, sınıf özelliklerine sahip değil, bu yüzden boyutlara erişemiyorum. –

İlgili konular