2010-06-17 102 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

相关问题