Может ли функция вернуть объект? Objective-C и NSMutableArray - PullRequest
1 голос
/ 16 апреля 2010

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

Вот что я пытаюсь выяснить.

//Definition:
function Objects (float a, float b) {
    NSMutableArray *array = [[NSMutableArray alloc] init];
    [array addObject:[NSNumber numberWithFloat:a]];
    [array addObject:[NSNumber numberWithFloat:b]];  
    //[release array]; ????????
    return array;
}

//Declaration:
 Math *operator = [[Math alloc] init];
    [operator findSum:Objects(20.0,30.0)];

Мой код компилируется, если я создаю экземпляр NSMutableArray непосредственно перед отправкой сообщения получателю. Я знаю, что могу иметь аргумент массива вместе с методом. Что я вижу, так это то, как использовать функцию и заменить аргумент вызовом функции. Любая помощь приветствуется. Меня интересует концепция, а не предложения по замене метода findSum.

1 Ответ

6 голосов
/ 16 апреля 2010

Используйте autorelease для возврата объектов, созданных вами в методах / функциях.

NSMutableArray* Objects(float a, float b) {
    NSMutableArray *array = [[[NSMutableArray alloc] init] autorelease];
                     // or: [NSMutableArray array];

    [array addObject:[NSNumber numberWithFloat:a]];
    [array addObject:[NSNumber numberWithFloat:b]];  
    return array;
}

Или просто:

NSMutableArray* Objects(float a, float b) {
    return [NSMutableArray arrayWithObjects:
             [NSNumber numberWithFloat:a],
             [NSNumber numberWithFloat:b],
             nil];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...