Извините, если это звучит немного странно, я все еще относительно новичок в ObjC и iOS, но не новичок в разработке программного обеспечения, однако при чтении документов / просмотре видео на различные темы я слышу некоторые фразы, которые я я не уверен, может ли кто-то уделить минуту, чтобы дать очень краткое описание следующих терминов, или указать мне хороший справочник для них.
Я перечислю ниже термины, с которыми я застрял, и то, что, как мне кажется, я понял, это означает / означает, и любая помощь в исправлении меня, чтобы я мог лучше следить за потоком документации Apple, будет высоко оценена.
1) Синглтон
Возможно, похож на полностью статический класс в PHP, не имеет методов экземпляра
2) Организация модели, вида, контроллера (MVC) - в частности, компонент «модель»
Я знаю, что широкое определение - держать вещи отдельно, и я думаю, что это равнозначно тому, что ваш взгляд был бы тем, что вы строите для вывода на экран либо программно, либо в конструкторе интерфейса, контроллер - это код, который обрабатывает сообщения (щелчки , нажимает и т. д.) из представления и выталкивает информацию в представление, хотя во многих случаях пары .xib и .h / .m, которые формируют представление и контроллер, являются частью одного семейства (то есть MyViewController.h / .m / .xib ). Моя догадка заключается в том, что отдельные обработчики для чтения и записи данных в / из источника, например, класс, в который вы отправляете сообщения, могут загружать и возвращать данные из базы данных SQLite или из фида XML и обрабатывать их.
3) Где правильное место для *, когда речь идет о типах объектов?
Я знаю, * означает указатель, но я видел вещи, написанные ниже, выглядящие так, как будто они означают одно и то же:
NSString *myVar;
NSString* myVar;
NSString * myVar;
Я понимаю, что * идет после типа в заголовке сообщения, например:
- (void)myMessageHandler:(NSString *)str;
4) Когда использовать NSInteger вместо простого int?
Это тот, который может заставить меня выглядеть идиотом, но я должен спросить его, потому что я не уверен, когда использовать, и я вижу много разных примеров, где это смешано.
5) Повторно используемые идентификаторы сущностей
При удалении из очереди / создании объектов, которые работают через очередь повторного использования, я вижу один и тот же идентичный идентификатор, используемый каждый раз (например, для UITableViewCell, @ "cellIdentifier"). Тем не менее, я вижу, что ячейка сбрасывается с соответствующими данными строки каждый раз, а не просто сохраняется в очереди, эта путаница возникает из таблиц в HTML, где для адресации каждой строки вы пересекаете DOM или добавляете тег ID в каждая строка уникальна.
Я думаю, что это вещь управления памятью, при которой вы не заметите, что происходит, если вы используете класс по умолчанию, но если вы используете разные пользовательские классы, я предполагаю, что идея состоит в том, что вы создаете экземпляр только для каждого типа для экземпляра родительского класса (например, UITableView), так что даже если вы каждый раз сбрасываете свойства, требуемая общая память минимальна, а время создания вынимается из цикла, как вы делаете это только один раз?
Часть 2 к этому вопросу будет, если у меня есть приложение, в котором несколько контроллеров представления помещены друг на друга, было бы целесообразно использовать уникальный идентификатор, который относится к конкретному представлению, поэтому, если бы я использовал пользовательские подклассы, идентификаторы не будут вызывать совпадения и, возможно, утечку памяти.
Например, UITableView выдвигает карту, которая выдвигает UITableView, когда аннотация выбрана, если я использовал «cellIdenfier» в качестве имени для повторного использования в обоих UITableView, но второй использовал пользовательский класс для UITableViewCell, когда я возвращаюсь к вид сверху, не будет ли система потенциально возвращать мне неправильный тип во время очереди и вызвать немного странный вывод?