'-6ren"> '-我被这个警告困扰了好几个小时......我越来越 代码是, -(NSMutableDictionary*)iOSDiction { NSMutableDicti-6ren">
gpt4 book ai didi

ios - 警告 : "Sending ' NSObject *' to parameter of incompatible type ' id'

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:29 27 4
gpt4 key购买 nike

我被这个警告困扰了好几个小时......我越来越

代码是,

-(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;
}

警告:

"Sending 'NSObject *' to parameter of incompatible type 'id'

在这里将参数传递给参数aKey

NSDictionary.h

- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;

最佳答案

NSDictionary 键应该符合 NSCopying 协议(protocol)。这是 NSDictionary 中指定的 key 的基本要求。引用。一般来说,NSObject 不符合协议(protocol)(它的子类可能),因此您会收到警告。正确的做法是

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;

这确保您的 key 是确认 NSCopying 协议(protocol)的任何对象。

编辑:看来您真正想做的只是 [m_coordDic mutableCopy],一个浅拷贝。您有什么理由不这样做?

关于ios - 警告 : "Sending ' NSObject *' to parameter of incompatible type ' id<NSCopying>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21473498/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com