Форум программистов, компьютерный форум, киберфорум
Наши страницы

Отличия блоков от обычных функций - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C Перцептрон на objective c http://www.cyberforum.ru/objective-c/thread1297245.html
Добрый день! Я пытаюсь реализовать перцептрон на обжектив-С. Но столкнулся с проблеммой, когда через какое-то число эпох выход сети уходит в 1 или -1, а через эпоху 1-2 после этого все веса...
Objective-C Текст кнопки назад в навигационном контроллере При добавлении нового контроллера вида в навигационный контроллер в текст кнопки назад устанавливается заголовок предыдущего контроллера. Как это убрать? http://www.cyberforum.ru/objective-c/thread1295513.html
Готовые решения для безопасного хранения файлов для приложения Objective-C
Добрый день. Являюсь самым новым новичком в программировании на Objective-C, прошу совета. Для простейшего приложения, показывающего html и png файлы, нужно безопасное хранилище для этих данных с...
AddSubview порядок отрисовки Objective-C
допустим у меня есть UIView в виде зеленого квадрата, еще один в виде красного прямоугольника и какой-нибудь UILabel и я назначаю им пересекающиеся фреймы. Далее для каждого прописываю: как это...
Objective-C Где didMoveToSuperview в UITableViewController? http://www.cyberforum.ru/objective-c/thread1291346.html
мне в нескольких контроллерах вида нужен индикатор загрузки данных по центру экрана чтоб не настраивать его каждый раз, я сделал класс со всеми настройками @implementation...
Objective-C Как сделать свой шрифт в приложении? Возможно ли сделать свой шрифт в приложении? И как это сделать? Превыше благодарен. подробнее

Показать сообщение отдельно
Vorona
Peace 2 all shining faces
671 / 533 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
11.11.2014, 22:37
блоки в objective-c, грубо говоря, служат в качестве анонимных функций, лямбда выражений или замыканий
если знаете ruby, javascript или например python, то вы уже знаете что это

блоки можно присваивать переменным, передавать в функции и возвращать из функций
в более функциональных языках функции изначально являются функциями высшего порядка или функциями первого класса
В objective-c это немного затянуто и иначе реализовано, потому на помощь приходят блоки, вот и все

намного удобней написать вот так
Objective-C
1
2
3
4
5
6
[array enumerateObjectsUsingBlock:^(NSNumber *weight, NSUInteger idx, BOOL *stop) {
    if (idx == inputs.count) {
        *stop = YES;
        return;
    }
}];
нежели как-то так:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@interface MyClass <NSArrayEnumerator>
 
// . . .
 
- (void)myMethod
{
    [array enumerateObjectsWithDelegate:self]
}
 
// . . .
 
- (void)array:(NSArray *)array enumerateNextWithWeight:(NSNumber *)weight index:(NSUInteger)idx stop:(BOOL *)stop
{
    if (idx == inputs.count) {
        *stop = YES;
        return;
    }
}
Конечно, пример не из реальной жизни, но к сожалению очень часто именно так и происходит, и что еще хуже,
так то, что "старые фанаты" делегатов не понимают и не хотят учиться не хотят использовать блоки и пишут подобную ерунду
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru