Объявление метода в Objective-C - PullRequest
0 голосов
/ 28 декабря 2011

Почему мы объявляем метод вроде

- (void) createBudget: (double) aBudget withExchangeRate: (float) anExchangeRate; 

Почему не нравится:

-(void) createBudget: (double) aBudget; -(void) withExchangeRate: (float) anExchangeRate;" 

в Objective-C

Какая польза от объявления методав первую очередь ..?

Ответы [ 3 ]

2 голосов
/ 28 декабря 2011

Я предполагаю, что вы уже знаете, что 2-й способ создаст два метода с одним аргументом, в то время как первый создаст один метод с двумя аргументами.Итак, ваш вопрос сводится к тому, зачем передавать несколько аргументов в метод.Мы делаем это потому, что для правильного функционирования метода нужны оба аргументы

Пример: рассмотрим NSMutableArray объект mutableArray

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index

Если мы вызываем этот метод в mutableArray, мы можем вставить anObject в index-index.Посмотрите, как этот способ создания метода поначалу странен, но читается очень хорошо.

если бы мы разделили его на 2 метода

- (void)insertObject:(id)anObject;
- (void)atIndex:(NSUInteger)index;

В обоих случаях мы знали бы только какой объектвставить или куда вставить.Но никогда не то и другое, что требуется для правильной вставки.

0 голосов
/ 28 декабря 2011

Первая функция на самом деле является функцией с двумя параметрами.

- (void) createBudget: (double) aBudget withExchangeRate: (float) anExchangeRate; 

Вы также можете объявить вышеуказанную функцию как

- (void) createBudget: (double) aBudget:(float) anExchangeRate;

оба будут работать нормально, но с точки зрения понимания, из первого объявления, человек может догадаться, что это за функция. он / она прямо скажет, что эта функция берет параметр-бюджет с обменным курсом и выполняет операцию с ним.

где, как во втором объявлении, если мы заменим переменные aBudget и anExchangeRate на что-то другое, никто не сможет догадаться, что они будут делать.

Теперь для вашей второй функции:

-(void) createBudget: (double) aBudget; -(void) withExchangeRate: (float) anExchangeRate;

здесь вы создали 2 функции, т.е. createBudget и withExchangeRate, а не одну. так что вы будете вызывать эти функции отдельно, то есть когда вы будете вызывать createBudget, вы можете получить доступ только к aBudget, а не к anExchangeRate, как это определено в отдельной функции.

0 голосов
/ 28 декабря 2011

Хорошо, вы неправильно понимаете метод и его параметры.

- (void) createBudget: (double) aBudget withExchangeRate: (float) anExchangeRate;

объявляет метод createBudget с двумя параметрами (сообщения, которые он может получать) aBudget и anExchangeRate.Можно использовать:

  [createBudget 1000.00 withExchageRate: 1.5]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...