这是我的方法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");
}
}
如果条件
则出错答案 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。