Существует подход для каждого подхода, в зависимости от того, что вы действительно делаете.Два варианта:
- Это действительно вспомогательный метод, который используется во многих местах в вашем приложении.
- Он специфичен для отдельного класса, а словарь является членомэтого класса.
ВАРИАНТ 1) Если это действительно вспомогательный метод, я считаю, что вы должны вернуть NSDictionary из метода.Я предполагаю, что он снова распределен в этом методе.
Другими словами, предпочтите:
+ (NSDictionary *) dictFromArray:(NSArray *);
Если у него есть полезность вне одного класса, вы можете поместить его в разумныйкласс, который собирает связанные вспомогательные методы.
Альтернативный подход к передаче пустого словаря для заполнения практикуется в C, потому что он создает симметрию вокруг распределения и освобождения и проясняет, кому принадлежит память.
В Objective-C подсчет ссылок позаботится об этом, так что вы можете избежать дополнительного кода выделения пустых объектов просто для вызова метода.
Например:
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init];
dictFromArray(myArray, myDict);
Когда речь заходит о том, кто владеет объектом, вы должны придерживаться соглашений Objective C, где:
+ (NSDictionary *) dictFromArray:(NSArray *)array
возвращает объект автоматического освобождения, поэтому вызывающая сторона знает, что ему нужно сохранить его, еслиони хотят хранить ссылку.
ВАРИАНТ 2) Если функциональность специфична для отдельного класса и этот класс имеет словарь в качестве члена, то я быв массиве, обновите переменную-член словаря, используя содержимое массива, и верните void.
Что-то вроде:
- (void) setBlahFromArray:(NSArray *)array