Содержание
- 2. Тип и литерал блока typedef int (^MyBlock)(int); int multiplier = 7; MyBlock myBlock = ^(int num)
- 3. Вызов блока { ... myBlock( 3 ); //или if ( myBlock ) myBlock( 3 ); }
- 4. Контекст блока 1. примитивные типы int multiplier = 7; int (^myBlock)(int) = ^(int num) { return
- 5. Контекст блока 2. ключевое слово __block __block int multiplier = 7; int (^myBlock)(int) = ^(int num)
- 6. Контекст блока 3. переменные – указатели на объекты с подсчетом ссылок (id, NSObject) NSDate* date =
- 7. Контекст блока 4a. управление памятью NSDate* date = [ [ NSDate alloc ] init ]; //создаем
- 8. Контекст блока 4b. управление памятью __block NSDate* date = [ [ NSDate alloc ] init ];
- 9. Блоки и управление памятью 1. отложенный вызов void (^printDate)() = ^() { NSLog( @”Hello ☺” );
- 10. Блоки и управление памятью 2. block как результат функции -(JFFSimpleBlock)example { return [ [ ^ {
- 11. Блоки и управление памятью 3. Виды блоковых объектов Глобальные - без состояния Локальные - в стеке
- 12. Управление памятью и Блоки
- 13. Automatic Reference Counting No copy, release and autorelease
- 14. Блоки Best practice 1. Работа с контейнерами на примере NSArray 2. Охраняющие выражения - guards 3.
- 15. NSArray concurrent enumerate NSArray* arr_ = [ NSArray arrayWithObjects: @"1" , @"2” , @"3” , nil
- 16. NSArray Строгая типизация vs NSPredicate NSArray* array_ = [ NSArray arrayWithObjects: @"1" , @"2" , @"3"
- 17. JFFLibrirary’s NSArray расширения JFFLibrirary github +(id)arrayWithSize:( NSUInteger )size_ producer:( ProducerBlock )block_; -(void)each:( ActionBlock )block_; -(NSArray*)map:( MappingBlock
- 18. Охраняющие выражения – guards { [ self beginUpdates ]; //update rows here //здесь ошибка если condition_
- 19. Охраняющие выражения – guards -(void)withinUpdates:( void (^)( void ) )block_ { [ self beginUpdates ]; @try
- 20. Охраняющие выражения – guards { [ self.tableView withinUpdates: ^( void ) { //update rows here if
- 21. Отложенные вызовы onDeallocBlocks -(void)dealloc { [ [ NSNotificationCenter defaultCenter ] removeObserver: self ]; //release ivars here
- 22. Отложенные вызовы onDeallocBlocks 1. objc_setAssociatedObject( self , &ownerships_key_ , ownerships_ , RETAIN_NONATOMIC ); 2. Class JFFOnDeallocBlockOwner
- 23. Отложенные вызовы onDeallocBlocks -(void)addOnDeallocBlock:( void(^)( void ) )block_ { JFFOnDeallocBlockOwner* owner_ = [ [ JFFOnDeallocBlockOwner alloc
- 24. Отложенные вызовы onDeallocBlocks //лечим циклическую ссылку __block id self_ = self; [ self addOnDeallocBlock: ^ {
- 25. Отложенные вызовы Scheduled operations [ self performSelector: @selector( someMethod ) withObject: nil afterDelay: 20. ]; [
- 26. Отложенные вызовы Scheduled operations __block id self_ = self; JFFScheduledBlock bk_= ^ { [ self_ someMethod
- 27. Блоки вместо делегатов в UIAlertView -(void)alertView:( UIAlertView* )alert_view_ clickedButtonAtIndex:( NSInteger )button_index_ { NSString* title_ = [
- 28. Блоки вместо делегатов в UIAlertView JFFAlertButton* bt_ = [ JFFAlertButton alertButton: title_ action: ^ { //do
- 29. Обобщенное асинхронное программирование 1. Асинхронная операция в общем виде 2. Кеширование 3. Порядок выполнения Дерево зависимостей,
- 30. Асинхронная операция в общем виде CancelBlock (^AsyncOperation) ( ProgressHandler , CancelHandler , FinishHandler ) { …
- 31. Кеширование Физический запрос Логический запрос 1 Логический запрос 2 Ответ 1 Ответ 2
- 32. Кэширование, API //физический запрос JFFAsyncOperation data_loader_ = ...; //кэшированный запрос JFFAsyncOperation cached_loader_ = [ self asyncOperationForPropertyWithName:
- 33. Порядок выполнения - последовательность sequence_ = sequenceOfAsyncOperations ( operation1_ , operation2_ , nil ); Асин. оп.1
- 34. Порядок выполнения - группа group_ = groupOfAsyncOperations ( operation1_ , operation2_ , nil ); Запрос 3
- 35. Порядок выполнения – граф ленивые вычисления JFFAsyncOperation other_pages_ = ^( callbacks_ ) { NSArray* loaders_ =
- 36. Load balancer //имя текущего контекста void setBalancerActiveContextName( NSString* name_ ); //сбалансированная асинхронная операция balanced_loader_ = balancedAsyncOperation(
- 37. Запросы и сессия safe_loader_ = checkSessionForLoaderBlock( loader_ ) Login Logout
- 38. Легкий делегат { [ self.clip asyncImageWithWeakDelegate: self ]; } #pragma mark ClipDelegate -(void)clip:( Clip* )clip_ didLoadImage:(
- 39. Легкий делегат JFFAsyncOperation loader_ = …; __block id weak_delegate_ = delegate_; [ weak_delegate_ weakAsyncOperation: loader_ ]
- 40. Легкий делегат ARC JFFAsyncOperation loader_ = …; weak id weak_delegate_ = delegate_; loader_( nil , nil
- 42. Скачать презентацию
















![Охраняющие выражения – guards { [ self beginUpdates ]; //update rows here](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/474788/slide-17.jpg)


![Отложенные вызовы onDeallocBlocks -(void)dealloc { [ [ NSNotificationCenter defaultCenter ] removeObserver: self](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/474788/slide-20.jpg)
















![Легкий делегат { [ self.clip asyncImageWithWeakDelegate: self ]; } #pragma mark ClipDelegate](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/474788/slide-37.jpg)


Детский уголок
Учимся решать орфографические задачи в окончаниях существительных
Работа с переключателем
Футбольная статистика
Секреты речи и текста
Монякова Елена Вениаминовна
Без природы в мире людямДаже день прожить нельзя.Так давайте к ней мы будемОтноситься, как друзья.С грядки мы возьмем микстуру,З
Требования к составлению основной общеобразовательной программы основного общего образования
Materials handling, computerization, and packaging issues
Методы и основной инструментарий АУ
Презентация на тему Инструктаж по поведению на льду
ГОРОДСКОЙ ПРОЕКТ «Строительство детского сада модульным способом»
Современные проблемы непостоянства кадров в организации
Атомные электростанции
Дымковская игрушка. История дымковской игрушки
Презентация на тему Let's read and speak English
Презентация на тему Учимся произносить звук Р
Animals school
Био-арт — цветы с кровеносной системой, телесные модификации и искусство рисовать накрыльях бабочек
Глаголы прошедшего времени
Крестьянская война1773-1775Емельян Пугачев-герой или антигеройОтечества?
Алтайские накосные украшения
Презентация для конкурса
Машиностроительный колледж. Специальность: мехатроника и мобильная робототехника
ОТ ЭНЕРГОЭФФЕКТИВНОГО ОБОРУДОВАНИЯ К ЭНЕРГОЭФФЕКТИВНЫМ ЗДАНИЯМ
DVIZH_Spotlight_10_5_going_green
«Показательная функция»
Презентация на тему Влияние интернета и социальных сетей на формирование личности