假设我的ViewController中有一个非常简单的方法,它返回一个数字。
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Number: %i",self.returnNumber);
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(NSInteger)returnNumber
{
NSInteger number = 2;
return number;
}
@end
这很好用,但是当我修改方法returnNumber以接受这样的输入参数时:
#import "ViewController.h"
@interface ViewController (
)
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Number: %i",self.returnNumber:2);
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(NSInteger)returnNumber:(NSInteger)insertedNumber
{
NSInteger number = insertedNumber;
return number;
}
@end
编译器说:
在'ViewController *'
类型的对象上找不到属性'returnNumber'
是某种错误还是我完全没有了解Objective-C方法的工作原理?
答案 0 :(得分:3)
是某种错误还是我完全没有了解Objective-C方法的工作原理?
后者。你混淆了消息发送和属性访问符号。 属性访问器方法不能使用任何参数。您想要的是:
予。 [self returnNumber:2]
II。一个很好的Objective-C初学者指南,特别关注语法和属性。 Here's Apple's official material on the subject for a starter.
答案 1 :(得分:1)
在.h文件中声明方法。
-(NSInteger)returnNumber:(NSInteger)insertedNumber;
并像这样调用方法
[self returnNumber:2];
答案 2 :(得分:1)
你必须把它放在像这样的括号中
[self returnNumber:2]
那应该解决问题。
答案 3 :(得分:0)
NSLog(@"Number: %i",[self returnNumber:2]);
答案 4 :(得分:0)
[self returnNumber:2]
将成为解决方案。由于self
定义了自己的class
或viewController
,并且要调用相同class
的方法,我们会使用self
调用该方法。