3. Блоки в Objective-C
Блок
● Функция
● Может иметь входные параметры
● Может возвращать значение
Блоки Objective-C
4. Блоки в Objective-C
Блок
● Функция
● Может иметь входные параметры
● Может возвращать значение
● Не имеет имени
● Является объектом
● Может ссылаться на свой контекст
● Может модифицировать свой контекст
● Может захватывать свой контекст
Блоки Objective-C
5. Блоки в Objective-C
Блок
● Функция
● Может иметь входные параметры
● Может возвращать значение
● Не имеет имени
● Является объектом
● Может ссылаться на свой контекст
● Может модифицировать свой контекст
● Может захватывать свой контекст
Блоки Objective-C
^ (int a, int b) {
return a + b;
}
6. Блоки в Objective-C
Блок
● Функция
● Может иметь входные параметры
● Может возвращать значение
● Не имеет имени
● Является объектом
● Может ссылаться на свой контекст
● Может модифицировать свой контекст
● Может захватывать свой контекст
Блоки Objective-C
typedef int(^blockType)(int, int);
...
@property (strong) blockType myBlock;
...
blockType block = ^ (int a, int b) {
return a + b;
}
self.myBlock = block;
int resultA = block(3, 5);
int resultB = self.myBlock(3, 5);
7. Блоки в Objective-C
Блок
● Функция
● Может иметь входные параметры
● Может возвращать значение
● Не имеет имени
● Является объектом
● Может ссылаться на свой контекст
● Может модифицировать свой контекст
● Может захватывать свой контекст
Блоки Objective-C
int b;
...
^ (int a) {
return a + b;
}
8. Блоки в Objective-C
Блок
● Функция
● Может иметь входные параметры
● Может возвращать значение
● Не имеет имени
● Является объектом
● Может ссылаться на свой контекст
● Может модифицировать свой контекст
● Может захватывать свой контекст
Блоки Objective-C
__block int c;
...
^ (int a, int b) {
c = a + b;
}
9. Блоки в Objective-C
NSArray *a = ...;
int b = ...;
...
^ (int c) {
int index = a.count + c - b;
Object *obj = a[index];
...
}
Блок
● Функция
● Может иметь входные параметры
● Может возвращать значение
● Не имеет имени
● Является объектом
● Может ссылаться на свой контекст
● Может модифицировать свой контекст
● Может захватывать свой контекст
Блоки Objective-C