错误的接收方类型 'NSUInteger *'(又名"无符号 int *")



这是我的方法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");
    }
}

如果条件

,则出现错误

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

您不需要传递地址,除非您正在更改方法内部的值,并且您可以只检查值,而不是将数字视为对象。

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

学习查看您收到的错误消息。在这种情况下,错误消息会告诉您到底出了什么问题。语法[object message]正在向对象发送消息。NSInteger是标量类型,而不是对象类型。

顺便说一句,您的方法没有返回结果,并且名称不正确。它应该被称为类似heightAndWidthAreNotZero的东西。

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

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

相关内容

最新更新