发现多个名为“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”的方法,结果、参数类型或属性不匹配的主要内容,如果未能解决你的问题,请参考以下文章

发现多个类型的家庭控制器

Spring中切面详解(AOP)

找到多个与名为“Home”的控制器匹配的类型。解决方法

找到多个与名为“Home”的控制器匹配的类型

找到多个与名为“Home”的控制器匹配的类型

找到多个与名为“Home”的控制器匹配的类型