向方法添加输入参数使其停止工作

时间:2013-05-15 10:40:51

标签: ios objective-c

假设我的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方法的工作原理?

5 个答案:

答案 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]);

try this for more about Methods and Messaging

答案 4 :(得分:0)

[self returnNumber:2]将成为解决方案。由于self定义了自己的classviewController,并且要调用相同class的方法,我们会使用self调用该方法。