-1

我正在阅读一本 Objective-C 的书来学习,并遇到了一个我不特别认识的符号:在标题中创建了指向“名称”的指针作为实例变量。

NSString *name;

然后,在其中一个函数声明中,它说:

-(id)initWithName:(NSString*)name atFrequency:(double)freq;

我知道这是一个名为的实例方法initWithName:atFrequency:,但我不明白参数的含义(NSString*)name。他将不胜感激任何帮助!

4

1 回答 1

1

所谓的两件事name是完全无关的。正如您所说,一个(第一个)是一个实例变量。另一个是方法参数,对方法调用中提供的第一个参数的本地引用。所以如果有人说

[[MyClass alloc] initWithName:@"howdy" atFrequency:2];

然后方法的主体内initWithName:atFrequency:,将有一个name带有值@"howdy"的变量(和一个freq带有值的变量2.0)。

然而,这令人不悦。您的局部变量掩盖了实例变量。这是不明智的,事实上我希望编译器会发出警告。

于 2013-04-23T02:27:14.670 回答