Вопрос, над которым я размышлял последнее время. Я в первую очередь разработчик .net, который балуется Objective-C для iPhone и Mac.
Как вы отправляете «наборы данных» между методами в объекте-c. Например, в C# вы можете заполнить настраиваемый класс данными и передать их в списке типа настраиваемый класс. Например, если бы у вас был класс клиентов, вы бы просто сделали что-то вроде:
List<Customer> customers = DataLayer.GetAllCustomers();
Единственный способ увидеть, как это можно сделать в obj-c, - это заполнить NSArray настраиваемыми объектами? Это эффективный способ делать что-то? Есть другие рекомендации? Я использую sqlite в качестве базы данных / данных, которые хочу вернуть.





Вы на правильном пути.
Классы коллекций Какао - все они имеют изменяемые и неизменяемые варианты - это:
Неизменяемые варианты очень помогают с эффективностью. Стандартный шаблон для методов доступа к классам, которые имеют изменяемые варианты, - это копирование, а не сохранение. Это кодифицировано в механизме @property с помощью атрибута copy в свойстве:
// Department.h
@interface Department : NSObject
@property (readwrite, copy) NSSet *employees;
@end
Это означает, что если вы передадите изменяемый массив чему-то, что принимает массив, он будет скопирован, а если вы передадите его чему-то другому, он будет скопирован снова. Хитрость заключается в том, что «копирование» неизменяемого объекта на самом деле просто сохраняет его, поэтому вы получаете удар только для этой первой копии. Вы, вероятно, хотеть, чтобы сделать копию в первый раз в любом случае, чтобы вы не передавали изменяемый массив чему-то еще, а затем изменяли его за спиной того, чему вы его передали.
Что касается Cocoa в Mac OS X, я также настоятельно рекомендую вам взглянуть на Core Data. Это альтернатива шаблону «набор данных», который вы могли использовать в .NET / ADO / etc. С Core Data вы не «собираете всех клиентов», а затем передаете эту коллекцию. Вместо этого вы запрашиваете клиентов, о которых вы заботитесь, и по мере того, как вы просматриваете отношения объектов, о которых вы запрашиваете, другие объекты будут автоматически извлечены для вас.
Core Data также предоставляет вам такие функции, как визуальное моделирование ваших объектов, автоматическое создание средств получения и установки свойств, детальный контроль над миграцией из одной версии схемы в другую и т. д.
Также вы можете поискать легкие оболочки вокруг SQLite, чтобы упростить создание объектов из вашей базы данных.