【发布时间】:2013-03-11 19:36:18
【问题描述】:
在我的应用程序中,有时我需要识别可变对象以适当地处理它们。事实证明这比看起来更困难。
如果我在NSString 上使用isKindOfClass:[NSMutableString class],所有字符串似乎都是可变的。
如果我问他们是否回复@selector(appendString:),他们都会回复。
如果我真的尝试在 @try...@catch...@finally 块中对它们进行变异,那么真相就会大白于天下。然而,它非常不优雅而且非常缓慢。
最好的做法是什么?
【问题讨论】:
-
您已经尝试过使用
isMemberOfClass[[NSMutableString class]]? -
您是否要确定该类是否实际上是
NSMutableString?如果是这样,您是否尝试过改用isMemberOfClass:方法,如果它实际上是该类的成员(但不是子类),则返回YES? -
看看总是有趣的 BNR 博客:About Mutability
-
"...非常不雅而且很慢"...而且很破。
-
理论上(基于继承)
mutableString isKindOfClass:[NSString class]应该为真,但nonMutableString isKindOfClass:[NSMutableString class]应该为假。 (但 Objective-C 继承偶尔会表现出一定程度的近亲繁殖。)
标签: objective-c cocoa immutability introspection