我在Xcode 5中遇到“Bad receiver type'void'”错误。我使用以下代码,
方法定义:
- (BOOL)allItemsSelectedFrom:(NSSet *)original selectedItems:(NSMutableArray *)selecteds{
NSLog(@"original = %@", original);
for (id object in original)
if([[object display] intValue]==1)
if (![selecteds containsObject:[object name]])
return NO;
int k=0;
for (id object in original)
{
if([[object display] intValue]==1)
k++;
}
//if(k==[selecteds count] && ([selecteds count]!=0))
if(k==[selecteds count])
return YES;
else
return NO;
}
方法调用:
BOOL allItemsSelected = [self allItemsSelectedFrom:profile.chemotherapies selectedItems:chemotherapies];
如何在Xcode 5中解决此问题?
还有一件事,它在Xcode 4.6.3中工作正常,没有发生错误..
答案 0 :(得分:3)
它与xcode没有任何关系。它与基本sdk标题有关 编译器不知道要使用什么方法显示,因为有很多
将ID中的强制转换添加到您正在使用的对象中,以便它使用正确的显示方法
答案 1 :(得分:1)
编译器可以看到多个display
方法(请参阅[CALayer (void)display]
),因为您使用id
它可能是其中任何一个。
而不是循环中的id
,而是使用实际的类:
for (YourClass *object in original)
这将为您提供更多类型检查,并向Xcode提供有关返回类型的提示。