发现多个名为“edges”的方法,结果、参数类型或属性不匹配
Posted
技术标签:
【中文标题】发现多个名为“edges”的方法,结果、参数类型或属性不匹配【英文标题】:Multiple methods named 'edges' found with mismatched result, parameter type or attributes 【发布时间】:2013-09-30 13:07:50 【问题描述】:此代码在 X-Code 4.6 中有效,但在 X-Code 5 中失败:
NSMutableArray *a = [[NSMutableArray alloc] initWithCapacity:4];
for (int k=0; k<4; k++)
int e = arc4random_uniform(3)+1;
if (arc4random_uniform(2)>0)
e *= -1;
[a addObject:[NSNumber numberWithInt:e]];
if (i>0)
int l = [arrayPieces count]-pieceNumber;
int e = [[[[arrayPieces objectAtIndex:l] edges] objectAtIndex:1] intValue]; //CAUSES ERROR
[a replaceObjectAtIndex:3 withObject:[NSNumber numberWithInt:-e]];
if (j>0)
int e = [[[[arrayPieces lastObject] edges] objectAtIndex:2] intValue];//CAUSES ERROR
[a replaceObjectAtIndex:0 withObject:[NSNumber numberWithInt:-e]];
我还收到与同一代码相关的以下错误:
错误的接收器类型“UIRectEdge”(又名“枚举 UIRectEdge”)
...但我的项目中没有提及“UIRectEdge”。
我已经搜索了这些错误的类似案例,但似乎没有足够接近的方法来解决我能够尝试的问题。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
【参考方案1】:似乎与Bad receiver type UIRectEdge and Multiple methods named中的问题相同
我猜你的项目也是来自https://github.com/AndreaBarbon/Puzzle-ios
为了让它在 Xcode 5.0.2 中运行,我所做的是在整个项目中搜索“edges”并将每个实例替换为“my_edges”(不带引号),然后它就可以工作了。
问题是 Xcode5/iOS7 中的 uikit 中添加了“edges”,这就是您收到错误的原因。
【讨论】:
【参考方案2】:'edges' 属性返回一个 UIRectEdge。如果您在“arrayPieces”中有一个自定义类,它有自己的 getter,称为“edges”,请尝试像这样强制转换对象:
int e = [[[((MYCUSTOMOBJECT*)[arrayPieces objectAtIndex:l]) edges] objectAtIndex:1] intValue]; //CAUSES ERROR
【讨论】:
【参考方案3】:将e
的分配替换为以下内容:
int e = [[[((PieceView *)[arrayPieces objectAtIndex:l]) edges] objectAtIndex:1] intValue];
【讨论】:
以上是关于发现多个名为“edges”的方法,结果、参数类型或属性不匹配的主要内容,如果未能解决你的问题,请参考以下文章