как инициализировать параметр метода с нуля - PullRequest
0 голосов
/ 27 октября 2011

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

// метод

- (IBAction)startSortingTheArray:(NSArray *)arrayData:(NSArray *)arrayDataB
{
//..
}

Ответы [ 3 ]

1 голос
/ 27 октября 2011

Да, вы должны быть в состоянии пропустить один ноль, если это необходимо, если ваша реализация закодирована так, чтобы ожидать этого.Например:

- (void)startSortingTheArray:(NSArray *)arrayData arrayB:(NSArray *)arrayDataB
{
    if (arrayData != nil) {
        // process arrayData
    }
    if (arrayDataB != nil) {
        // process arrayDataB
    }
}

Чтобы сделать ваш интерфейс более чистым, вы также можете предоставить альтернативную сигнатуру метода и сделать что-то вроде:

- (void)startSortingTheArray:(NSArray *)arrayData
{
    [self startSortingTheArray:arrayData arrayB:nil];
}

Обратите внимание, что я изменил тип возвращаемого значенияиз того, что вы изначально разместили.Вы объявили его как IBAction, который должен принимать отправителя в качестве аргумента, а не массив, как вы его передавали.Я предполагаю, что вы хотели, чтобы это было применено к другой функции, а не к действию создателя интерфейса.

1 голос
/ 27 октября 2011

Да, вы могли бы сделать это. Затем в вашем startSortingTheArray обработайте такие случаи ... (т.е. кодируйте таким образом, что вы не предполагаете, что оба arrayData & arrayDataB присутствуют).

Еще одно предложение, которое я хотел бы сделать, - если параметров становится слишком много, и у вас есть такой сценарий, когда некоторые параметры присутствуют, а некоторые нет. Затем используйте 1 объект в качестве параметра. Этот объект инкапсулирован, и все точки данных являются свойствами этого объекта. Таким образом, ваш код будет намного понятнее и понятнее, его легко поддерживать, бла, бла ...

0 голосов
/ 27 октября 2011

если вы используете этот метод в построителе интерфейса, например, подключите его к UIButton, то это невозможно.

но если вы вызываете этот метод в других методах, тогда да

[self startSortingTheArray:nil arrayB:nil];

- (IBAction)startSortingTheArray:(NSArray *)arrayData:(NSArray *)arrayDataB
{
if(arrayData == nil){
// do something
}
if(arrayDataB == nil){
// do something
}
if(arryaData == nil && arrayData == nil){
// do something
}

// .. }

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