Skip to content

Instantly share code, notes, and snippets.

View arturlector's full-sized avatar

Artur Igberdin arturlector

  • Kazan
View GitHub Profile
@arturlector
arturlector / fast_enumeration.md
Created March 13, 2016 12:53
Что такое быстрое перечисление (fast enumeration)?

Что такое быстрое перечисление?

Итерация (цикл) по коллекциям (NSArray, NSDictionary): 
for Type *item in Collection {}
@arturlector
arturlector / id_vs_nsobject.md
Created March 13, 2016 13:13
Что такое тип id? Разница между NSObject и id? Что случится во время компиляции если мы посылаем сообщение объекту типа id?

Что такое тип id?

id - это указатель на любой НЕПРИМИТИВНЫЙ объект. В ARC нельзя сконвертировать примитив в id.

Разница между NSObject и id?

Все непримитивные объекты являются типом id. 
@arturlector
arturlector / isa_pointer.md
Created March 13, 2016 20:16
Что такое указатель isa? Для чего он нужен?

Что такое указатель isa?

Указатель на Class для данного объекта. Каждый объект имеет ссылку на свой класс через isa.

@arturlector
arturlector / selector.md
Last active March 13, 2016 20:21
Что такое селектор (selector)? Как его вызвать? как отложить вызов селектора? Что делать если селектор имеет много параметров?

Что такое селектор (selector)?

Это по сути строковое сообщение, которое посылается объекту, и он выполняет метод, ассоциированый с этим селектором.

Как его вызвать?

[self performSelector:@selector(method)];

Как отложить вызов селектора?

@arturlector
arturlector / responder_chain.md
Last active December 21, 2017 18:34
Цепочка ответсвенности, что происходит с методом после того как он не нашелся в объекте класса, которому его вызвали (в сторону forwardInvocation:)?

Цепочка ответственности. Что происходит с методом после того как он не нашелся в объекте класса?

Вылет из приложения с NSUnknownException.
@arturlector
arturlector / self_in_blocks.md
Created March 13, 2016 21:11
Как использовать self внутри блоков? Пример retain cycle в блоке?

Как использовать self внутри блоков?

Когда нужен weak refence для self внутри блока?

Если блок находится во владении класса (retained). Например объект хранит свойство - блок.

Объект который владеет блоком - в этом случае и происходит захват self - внутри блока и происходит retain cycle (цикла владения).

@arturlector
arturlector / dot_notation_property.md
Last active March 14, 2016 14:49
Синтаксис с подчеркиванием и dot notation для обращения к свойства? Когда что использовать?

Синтаксис с подчеркиванием и dot notation для обращения к свойства?

Когда и что использовать?

Для работы со свойствами - используем dot notation синтаксис (это единство подхода).

При переопределении setter/getter и внутри init-метода - используем синтаксис с подчеркиванием. 
@arturlector
arturlector / get_places.md
Last active March 15, 2016 14:05
Google Places. Get places by current coordinate.

Google Places.

Get places by current coordinate

- (void)getNearbyPlaces
{
 [self.placesClient currentPlaceWithCallback:^(GMSPlaceLikelihoodList * _Nullable likelihoodList, NSError * _Nullable error) {
@arturlector
arturlector / add_property_with_runtime.md
Last active March 18, 2016 15:32
Как добавить свойство в существующий объект с закрытой реализацией через runtime?

Как добавить свойство в существующий объект с закрытой реализацией через runtime?

Добавляем свойство в GMSPlace. Добавляем shortAddress через runtime.

#import <GoogleMaps/GoogleMaps.h>

@interface GMSPlace (Category)
@property (strong, nonatomic) NSString *shortAddress;
@arturlector
arturlector / strong_vs_copy.md
Last active September 7, 2019 20:57
Weak vs assign, strong vs copy?

Weak vs assign, strong vs copy?

В чем отличие strong и copy у ccылки на объект NSString?

Владение объектом

strong - это просто ссылка (если где-то измениться то он тоже измениться). Например strong NSString obj1 может быть ссылкой на NSMutableString obj2 и obj1 будет меняться, если измениться obj2.