在iOS 6中,我可以这样做:
NSDictionary *d = @{anObject : "key"};
但是很明显,当对象是UIImageView或UIWebView(或者也可能是其他对象)时,它将崩溃:
'NSInvalidArgumentException', reason: '-[UIWebView copyWithZone:]: unrecognized selector sent
将字典声明更改为旧的工作方式:
NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys:anObject,@"key", nil];
知道为什么会这样吗?
最佳答案
语法是
NSDictionary *d = @{<key> : <value>, ...};
在您的情况下:
NSDictionary *d = @{@"key" : anObject};
因此,您的代码尝试使用
anObject
作为键。 UIWebView
失败,因为密钥必须符合
NSCopying
协议。关于ios - 为什么某些对象不能使用NSDictionary速记?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16360836/