Skip to content

Instantly share code, notes, and snippets.

View arturlector's full-sized avatar

Artur Igberdin arturlector

  • Kazan
View GitHub Profile
@arturlector
arturlector / designated_initializer.md
Last active March 14, 2018 09:00
Что такое назначенный инициализатор (designated initializer)?

Что такое назначенный инициализатор?

Назначенный инициализатор (designated initializer) - это главный инициализатор(конструктор), все остальные методы
создающие класс вызывают этот метод.

Как выглядит назначенный инициализатор?

@arturlector
arturlector / category_vs_inheritance.md
Created March 8, 2016 17:18
Когда лучше использовать категорию, а когда наследование?

Когда лучше использовать категорию, а когда наследование?

Категория используется чтобы не плодить классы, только добавить нужный метод. 
(убрать в категорию анимацию для контроллера).

Наследование используется для переопределения существующих методов. 
(рутовый класс для контроллера).
@arturlector
arturlector / category_vs_extension.md
Last active March 8, 2016 17:34
Чем категория отличается от расширения (class extension)?

Чем категория отличается от расширения?

В категории объявляются дополнительные методы. 

В расширении добавляются методы и поля. Расширение представляет собой особый тип категории и 
находится внутри реализации.
@arturlector
arturlector / ivar_in_category.md
Created March 8, 2016 17:38
Можно ли добавить ivar в категорию?

Можно ли добавить ivar в категорию?

  • Да
Class c = objc_allocateClassPair([NSObject class], "Person", 0);
class_addIvar(c, "firstName", sizeof(id), log2(sizeof(id)), @encode(id));
Ivar firstNameIvar = class_getInstanceVariable(c, "fistName");
@arturlector
arturlector / array_mutablearray.md
Created March 8, 2016 22:07
В чем разница между NSArray и NSMutableArray?

В чем разница между NSArray и NSMutableArray?

NSArray - неизменяемый

NSMutableArray - изменяемый
@arturlector
arturlector / nsset_vs_nsarray.md
Last active March 8, 2016 22:17
Чем отличается NSSet от NSArray?

Чем отличается NSSet от NSArray?

NSSet - хранит только уникальные объекты.

Какие операции происходят быстро в NSSet и какие в NSArray?

@arturlector
arturlector / multiple_inheritance.md
Last active February 11, 2017 15:59
Как имитировать множественное наследование?

Как имитировать множественное наследование?

Наследоваться от класса, который в свою очередь наследуется от другого класса и т.д.
@arturlector
arturlector / property.md
Created March 8, 2016 22:36
Объявление свойств?

Объявление свойств?

@arturlector
arturlector / property.md
Last active March 8, 2016 22:39
Объявление свойств?

Объявление свойств?

retain - ручное управление памятью (устарело).
assign - для примитивов (для указателей будет тупое присваивание адреса).
copy - объект копируется в момент присваивания.
nonatomic - для работы в одном потоке, более быстрый.
atomic - потоко-безопасен, блокирует одновременный доступ, более медленный.
@arturlector
arturlector / dot_notation_messages.md
Created March 8, 2016 22:43
В чем разница между точечной нотацией (dot notation) и использованием квадратных скобок?

В чем разница между точечной нотацией и использованием квадратных скобок?

При точечной нотации происходит диспетчеризация через геттер и сеттер
(если они переопределены).

Точечную нотацию правильно использовать только со свойствами.