在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/

10-12 14:34
查看更多