7

在我的应用程序中,有时我需要识别可变对象以适当地处理它们。事实证明这比看起来更困难。

如果我isKindOfClass:[NSMutableString class]在 a 上使用NSString,所有字符串似乎都是可变的。

如果我问他们是否回应@selector(appendString:),他们都会回应。

如果我真的试图在一个......块中改变它们@try@catch那么@finally真相就会被揭露。然而,它非常不优雅而且非常缓慢。

最好的行动方案是什么?

4

1 回答 1

2

如果您想忽略可变性,您可以遍历循环并使用每个字符串制作可变副本-mutableCopy(无论如何,它都会创建 NSMutableStrings)。反之亦然:通过发送-copy到每个对象,您可以保证获得一个不可变的 NSString。不幸的是,由于 NSString 是一个类集群,可变性不是一个完全可测试的概念。使用该行检查类@"__NSCFString"是非常不安全的,因为 Apple 有权随时更改底层类。

于 2013-03-11T20:13:36.993 回答