AC *_*han 3 objective-c nsdictionary nscopying ios ios7
我在这个警告中震惊了好几个小时......我越来越
代码是,
-(NSMutableDictionary*)iOSDiction
{
NSMutableDictionary *tmpDic = [[NSMutableDictionary alloc] initWithCapacity:[m_coordDic count]];
for (NSObject *key in [m_coordDic allKeys])
{
[tmpDic setObject:[m_coordDic objectForKey:key] forKey:key]; //Warning
}
return tmpDic;
}
Run Code Online (Sandbox Code Playgroud)
警告 :
“将‘NSObject *’发送到不兼容类型‘id’的参数
aKey在此处将参数传递给参数
NSDictionary.h
- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;
Run Code Online (Sandbox Code Playgroud)
NSDictionary密钥应符合NSCopying协议。这是NSDictionary参考中指定的密钥的基本要求。一般来说,NSObject不符合协议(它的子类可能),所以你会收到警告。正确的做法是
NSMutableDictionary *tmpDic = [[NSMutableDictionary alloc] initWithCapacity:[m_coordDic count]];
for (NSObject<NSCopying> *key in [m_coordDic allKeys])
{
[tmpDic setObject:[m_coordDic objectForKey:key] forKey:key]; //Warning
}
return tmpDic;
Run Code Online (Sandbox Code Playgroud)
这确保您的密钥是任何确认NSCopying协议的对象。
编辑:看来你真正想做的只是[m_coordDic mutableCopy]一个浅拷贝。你有什么理由不这样做?
| 归档时间: |
|
| 查看次数: |
7093 次 |
| 最近记录: |