不良接收器类型' NSUInteger *' (又名' unsigned int *')

时间:2015-02-14 13:37:21

标签: objective-c

这是我的方法createNewRectangleWithHeight,参数是heightParam和widthParam。我的问题是我无法在方法中使用该参数。

我收到类似这样的错误

接收器类型错误'NSUInteger *'(又名'unsigned int *')

-(BOOL)createNewRectangleWithHeight:(NSUInteger *)heightParam width:(NSUInteger *)widthParam{

    if ([[heightParam length] == 0] || [widthParam length]==0]) {
        NSLog(@"The height and width must no be 0");
    }
}

如果条件

则出错

2 个答案:

答案 0 :(得分:3)

您只能在对象上调用方法。指向unsigned int的指针不是对象;它只是一个数字的地址。

除非您更改方法中的值,否则无需传递地址,只需检查值而不是将数字视为对象。

-(BOOL)createNewRectangleWithHeight:(NSUInteger)heightParam width:(NSUInteger)widthParam {

    if (heightParam == 0 || widthParam == 0) {
        NSLog(@"The height and width must not be 0");
    }
}

答案 1 :(得分:1)

了解您收到的错误消息。在这种情况下,错误消息告诉您确切的错误。语法[object message]正在向对象发送消息。 NSInteger是标量类型,而不是对象类型。

顺便说一下,你的方法没有返回结果,并且命名错误。它应该被称为heightAndWidthAreNotZero。

其他人已经指出您应该使用(NSUInteger)而不是(NSUInteger *)作为参数类型。实际上,如果你准备好创建一个CGRect,你可能应该使用CGFloat,而不是NSUInteger,因为CGRect的不同值是CGFloat类型。

最后,有一个内置的系统函数CGRectIsEmpty(),它将CGRect作为输入,如果矩形为空则返回TRUE,如果它不为空,则返回FALSE。