how can you find out if an NSObject has a certain property?
Asked Answered
A

1

14

Let's say in Apple API version 1.0, there is a class NSFoo with a property 'color'. API 1.1 adds property 'size'.

I want to know whether I can use the getter: myFoo.size

[myFoo respondsToSelector:@selector(getSize)] doesn't work as expected.

What's the correct way to find out if an object has a property? Thanks!

Arras answered 17/6, 2010 at 5:10 Comment(0)
L
37

You're close. Your selector should be exactly the message you want to send to the object:

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

should work.

Legging answered 17/6, 2010 at 5:18 Comment(3)
It should be noted that this is because the default getters for properties omit the get prefix. Unlike setters which have the set prefix.Exurb
How can I do it the other way around? If I want to set size on Foo? myFoo doesn't know the class properties so I can not access size.Flatt
@CristianPena I beleive if you changed "size" to "setSize" in the selector you could then call [myFood setSize:5].Truncated

© 2022 - 2024 — McMap. All rights reserved.