Правильное управление addObserverForName: object: queue: usingBlock:

Я все еще новичок в блоках objective-c и задаюсь вопросом, правильно ли у меня этот код psuedo. Я не уверен, достаточно ли просто удалить наблюдателя или мне нужно вызвать removeObserver: name: object: -(void) scan { Scanner *scanner = [[Scanne ...

Доступ к массиву C внутри блоков (переменная array count) Objective-C

Блоки хороши, но как насчет написания массивов C? Учитывая эту упрощенную ситуацию: CGPoint points[10]; [myArray forEachElementWithBlock:^(int idx) { points[idx] = CGPointMake(10, 20); // error here // Cannot refer to declaration with an a ...

Как очистить и полностью освободить очередь Grand Central Dispatch при выпуске?

У меня есть объект, который при инициализации создает последовательную очередь GCD, используя dispatch_queue_create, а при освобождении вызывает dispatch_free. Во время существования объекта в очередь добавляются блоки отправки, однако очередь также ...

Синтаксис для определения блока, который принимает блок и возвращает блок в Objective-C

Я нахожу в документе Apple , работающем с блоками , что синтаксис для определения блока, который возвращает результат умножения двух значений: double (^multiplyTwoValues)(double, double); Отличается от определения блока, который принимает другой ...

объявить прямую ссылку на блок typedef?

В одном заголовочном файле у меня есть что-то вроде: typedef void (^MyBlock)(void); Мне нужно использовать ту же самую ссылку в другом заголовочном файле. Конечно, я могу #import один заголовочный файл в другой, или включить typedef в глобальный ...

NSComparisonResult и NSComparator-что это такое?

Что такое NSComparisonResult и NSComparator? Я видел одно из определений типа, что-то вроде этого: typedef NSComparisonResult (^NSComparator)(id obj1, id obj2); Отличается ли он от указателя функции? Кроме того, я даже не могу догадаться, что о ...

Как я могу разорвать циклы сохранения в моем коде?

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

Геокодирование Нескольких Местоположений-Знание Того, Когда Были Вызваны" Все " Блоки Завершения

Я использую геокодер CoreLocation для получения координат CLLocation для нескольких элементов карты. Геокодер вызывает блок завершения по завершении для каждого элемента. Как создать подобную функциональность блока, которая вызывается, когда все и ...

Objective-C: существует ли-invoke на блоках, который принимает параметры?

Как вы, возможно, знаете, блоки принимают -invoke: void(^foo)() = ^{ NSLog(@"Do stuff"); }; [foo invoke]; // Logs 'Do stuff' Я хотел бы сделать следующее: void(^bar)(int) = ^(int k) { NSLog(@"%d", k); }; [bar invokeWithParameters:7] ...

Запуск блоков в одном потоке

Я столкнулся с небольшой проблемой, которую не могу понять. Если у меня есть сигнатура метода с параметром блока с обратным вызовом в нем, и в моем методе я использую API, который имеет другой блок, API выполняет async, и мой код продолжает и вызывае ...

Как использовать "enumerateChildNodesWithName" с Swift в SpriteKit?

Я использую Swift, чтобы сделать игру в SpriteKit. В Objective-C я мог бы использовать следующий метод: (void)enumerateChildNodesWithName:(NSString *)name usingBlock:(void (^)(SKNode *node, BOOL *stop))block Для выполнения действий над этим *no ...

Селекторы или блоки для обратных вызовов в библиотеке Objective-C

Вопрос Мы разрабатываем пользовательскую систему сообщений EventEmitter inspired в Objective-C. Для слушателей, чтобы обеспечить обратные вызовы, должны ли мы требовать блоки или селекторы и почему? Что бы вы предпочли использовать, как разрабо ...

ошибка с использованием блоков в цикле for с быстрым перечислением

Таким образом, я пытаюсь построить очередь блоков в массиве, а затем выполнить очередь на более позднем этапе, очередь строится в forloop, который использует перечисление строки, используемой в блоке. NSArray *array = @[@"test", @"if", @"this", @"wo ...

Цель c управление памятью с блоками, дуги и дуги

Я использую блоки уже некоторое время, но чувствую, что есть вещи, которые я пропускаю в управлении памятью как в дуговых, так и в НЕДУГОВЫХ средах. Я чувствую, что более глубокое понимание позволит мне устранить многие утечки памяти. AFNetworking-э ...

Блоки, Штабеля И Кучи

Используя Xcode 4.2 и ARC, я написал следующий код, прежде чем понял, как блоки должны быть скопированы из стека в кучу. -(void) downloadWithBlock:(void (^)(void))callbackBlock; { // start the data download in the background... NSOperation * ...

Блок Objective-C не выпускается для фоновых приложений

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

Блоки и переменные Objective-C

Сегодня я начал использовать блоки Objective-C. Я написал следующий код: NSArray *array = @[@25, @"abc", @7.2]; void (^print)(NSUInteger index) = ^(NSUInteger index) { NSLog(@"%@", array[index]); }; for (int n = 0; n < ...

В Objective-C, что значит приписать слабого сильному внутри блока?

В Objective-C, что означает присвоить weak a strong в блоке? Что происходит за сценой? Например __weak __typeof(self) wself = self; void (^cmd)() = ^(){ __strong __typeof(self) sself = wself; if (!sself) return; ... }; ...

Блоки для контура обратных вызовов с пользовательского интерфейса

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

Что происходит, когда блок устанавливается равным нулю во время его выполнения?

Предположим, что у меня есть объект с сильной ссылкой на блок. В какой-то момент во время выполнения этого блока сильная ссылка устанавливается на ноль. Блок гарантированно завершит свое выполнение, или это может привести к сбою? Я видел ошибки ex ...