如果我只有一个键列表,是否有一种优雅的方法来测试对象的只读与读/写属性?我意识到我可以把钥匙串起来:
NSString *setterString = [@"set" stringByAppendingString:[someKeyString capitalizedString]];
BOOL isReadWrite = [myObject respondsToSelector:NSSelectorFromString(setterString)];
Run Code Online (Sandbox Code Playgroud)
或者更好的是尝试为密钥设置一个值并检查NSUndefinedKeyException
- 但是对非异常行为使用异常似乎是不好的形式.
为了清楚起见,我想以编程方式审计对象的属性,并告诉它们之间的区别,例如,
@property (readonly) NSString *someReadOnlyKey
@property NSString *someReadWriteProperty
Run Code Online (Sandbox Code Playgroud)
编辑:为了更清楚,如果将键实现为@property
s或手动getter/setter ,则无关紧要.只关注公共接口.并且感谢您询问我想要实现的目标 - 首先要做到这一点可能更为重要.
我试图勾勒出一些生成对象键的图形表示的代码.所有的密钥都是事先知道的 - 但我不会总是知道哪些密钥可以建立(这取决于特定的子类实现)