-3

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

4

5 回答 5

3

是某种错误还是我完全没有了解 Objective-C 方法的工作原理?

后者。您混淆了消息发送和属性访问器符号。属性访问器方法不能接受任何参数。你想要的是:

我。[self returnNumber:2]

二、一个很好的 Objective-C 初学者指南,特别关注语法和属性。这是 Apple 关于该主题的官方材料,供您参考。

于 2013-05-15T10:44:45.880 回答
1

你必须把它放在这样的括号中

[self returnNumber:2]

那应该可以解决问题。

于 2013-05-15T10:46:07.950 回答
1

在 .h 文件中声明方法。

-(NSInteger)returnNumber:(NSInteger)insertedNumber;

并像这样调用方法

[self returnNumber:2];
于 2013-05-15T10:44:54.420 回答
0
NSLog(@"Number: %i",[self returnNumber:2]);

试试这个以获得更多关于方法和消息的信息

于 2013-05-15T10:47:20.590 回答
0

[self returnNumber:2]将是解决方案。self定义它自己的classorviewController和调用相同的方法,我们class使用 调用该方法self

于 2013-05-15T10:50:06.657 回答