2013-04-23 3 views
-1

Я изучал книгу Objective-C, чтобы узнать, и натолкнулся на нотацию, которую я особо не узнаю: Указатель на «имя» создается в заголовке как переменная экземпляра.Что означает имя (NSString *)?

NSString *name; 

Тогда, в одном из объявлений функций, он говорит:

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

Я понимаю, что это метод экземпляра называется initWithName:atFrequency:, но я не понимаю смысл аргумента (NSString*)name. Любая помощь была бы ему очень благодарна!

+0

Вещь в круглых скобках - это тип параметра. Существует два параметра: 'initWithName:' ​​и 'atFrequency:'. –

+1

Если вы не изучаете Objective C на данный момент, остановитесь и получите книгу. –

+0

Это полностью аналогично формальным файлам на C или Java: 'int functionName (char * a, double b)'. ('(Id)' - это возвращаемый тип - 'id' является своего рода эквивалентом Java' Object' или C 'void *'.) –

ответ

1

Две вещи, называемые name, совершенно не связаны. Один (первый) является, как вы говорите, переменной экземпляра. Другой параметр метода - локальная ссылка на первый аргумент, предоставленный в вызове метода. Так что, если кто-нибудь говорит

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

затем внутри тело метода initWithName:atFrequency:, будет переменная name со значением @"howdy" (и переменной freq со значением 2.0).

Однако это нахмурилось. Ваша локальная переменная затеняет переменную экземпляра. Это неразумно, и на самом деле я ожидал, что компилятор предупредит.

+0

Привет! Спасибо за ответ, теперь я понимаю, почему он там, однако я все еще смущен тем, что означает обозначение «(NSString *) name». Почему астрика внутри скобки? Почему в скобках в первую очередь? Моя книга не справилась с этим, поэтому я даже не знаю, что искать, поэтому я пришел на форум. Извините, если на такие вопросы смотрят сверху вниз. – user2200321

+0

Я написал лучшую книгу. :) Я предлагаю вам начать со страницы 1. http://www.apeth.com/iOSBook/ch01.html – matt

+0

После того, как вы прочтете главу 1, вы узнаете, что такое звездочка. Затем вы можете начать с главы 3: http://www.apeth.com/iOSBook/ch03.html, и вы узнаете, как структурированы методы Objective-C. – matt

Смежные вопросы