Подтвердить что ты не робот

Метод с несколькими входными параметрами

Я понимаю, как создавать свои собственные методы, которые принимают входные параметры в objective-c, но я никогда не создавал метод с несколькими входными параметрами!

Из методов, которые я использовал с несколькими входными параметрами, у каждого есть имя по строкам

первая: вторая: третья:

и выглядите как

- (void)first:(NSString *)fname second:(NSString *)mname third:(NSString *)lname;

Мой вопрос заключается в том, что при создании собственного метода с несколькими входными параметрами вам нужно создать имя наподобие first: second: third или вы можете просто иметь что-то вроде С++, где у вас есть одно имя, за которым следует список типов входных параметров а затем имена параметров... если я правильно помню.

fullName:(NSString, NSString, NSString) fname, mname, lname;
4b9b3361

Ответ 1

Нет. Метод должен иметь формат, который вы описали:

- (void)first:(NSString *)fname second:(NSString *)mname third:(NSString *)lname;

Ответ 2

Вы должны иметь параметры, чередующиеся с сигнатурой метода. Это нормально, потому что xcode имеет завершение кода, и он может дать вам приятные описательные имена о том, что делает ваш метод и что он требует.

например.

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

В приведенном выше примере, даже не глядя на API для UIViewController, вы можете получить довольно хорошее представление о том, как работает этот метод и каковы его параметры. Это хорошая практика, чтобы назвать ваши методы хорошо, чтобы описать, что они делают (это может устранить необходимость в большинстве комментариев, если все будет хорошо).

Возможно, вы, конечно, увидите метод, написанный следующим образом

- (void)myMethodThatAcceptsARectangle:(float)x :(float)y :(float)w :(float)h;

Но это будет не очень понятно в использовании относительно того, к каким параметрам относятся:

[self myMethodThatAcceptsARectangle:1.0f :1.0f :1.0f :1.0f];

Поэтому вам следует избегать этого (я добавил, что вы видите, что когда-либо видите это, и задаетесь вопросом, что происходит).

Ответ 3

fullName:(NSString, NSString, NSString) fname, mname, lname;

Да, вы можете сделать что-то подобное. Вместо этого он выглядел бы следующим образом:

-(void)fullName:(NSString*)fname :(NSString*)mname :(NSString*)lname

и вы бы назвали это следующим образом:

[foo fullName:first :middle :last];

Это в значительной степени побеждает точку в именах методов Objective-C, и основная причина сделать что-то подобное - зарегистрировать вашу нелюбовь к обычному соглашению Objective-C или, возможно, вывести себя из любого проекта, работаем.

Ответ 4

Другим вариантом может быть переменные параметры. Они используются для предоставления переменного количества параметров, даже если у вас не будет имени на каждом из них. например.

[NSString stringWithFormat:@"My name is %@ %@", @"John", @"Doe"];

Это будет примерно так:

- (void)names:(NSString *)names, ...;

Реализация, дополнительная информация

Ответ 5

Вот простой пример для метода с параметрами.

- (void)methodName:(NSString *)parameterOne methodNameContinues:(NSString *)parameterTwo;

Например,

-(void)showAlertMsg:(NSString *)message withTitle:(NSString *)title;

Здесь вы можете увидеть, у нас есть префикс " с титром" для второго параметра. Мы должны продолжить то же самое для других параметров.

Ответ 6

Я могу думать о совершенно хорошей причине использовать NSDictionary для передачи аргументов. Я также считаю, что он отвечает на вопрос.

Вы можете поместить все предметы в NSDictionary, а затем распаковать их. Это может быть полезно, если вы скажете файл persitanceStore NSObject, в который вы хотите отправить список параметров.