Вопросы с тегом «objective-c-blocks»

Блоки - это реализация Apple закрытий для C, которые также доступны для Objective-C и C ++.

447
Что означает ключевое слово «__block»?

Что именно означает __blockключевое слово в Objective-C? Я знаю, что это позволяет вам изменять переменные внутри блоков, но я хотел бы знать ... Что именно он говорит компилятору? Это делает что-нибудь еще? Если это все, что нужно, то зачем это нужно? Это где-нибудь в документах? (Я не могу найти...

382
Присвойте переменную внутри блока переменной за пределами блока

Я получаю ошибку Переменная не присваивается (отсутствует спецификатор типа __block) на линии aPerson = participant;. Как я могу убедиться, что блок может получить доступ к aPersonпеременной и aPersonпеременная может быть возвращена? Person *aPerson = nil; [participants...

277
Список синтаксиса декларации блока

Блочный синтаксис в Objective C (и, как я полагаю, C), как известно, неуместен. Передача блоков в качестве аргументов выглядит иначе, чем объявление блоков как ivars, что выглядит иначе, чем в typedefблоках. Есть ли полный список синтаксиса объявления блока, который я мог бы держать под рукой для...

222
Как избежать захвата себя в блоках при реализации API?

У меня есть работающее приложение, и я работаю над его преобразованием в ARC в Xcode 4.2. Одно из предупреждений перед проверкой включает в себя selfсильный захват в блоке, приводящем к циклу сохранения. Я сделал простой пример кода, чтобы проиллюстрировать проблему. Мне кажется, я понимаю, что это...

192
Ожидание выполнения двух асинхронных блоков перед запуском другого блока.

При использовании GCD мы хотим подождать, пока два асинхронных блока не будут выполнены и выполнены, прежде чем перейти к следующим шагам выполнения. Каков наилучший способ сделать это? Мы попробовали следующее, но это не сработало:...

167
Сохранить цикл на «себя» с блоками

Боюсь, этот вопрос довольно простой, но я думаю, что он актуален для многих программистов Objective-C, которые разбираются в блоках. Я слышал, что поскольку блоки захватывают локальные переменные, на которые они ссылаются как constкопии, использование selfвнутри блока может привести к циклу...

150
Когда использовать enumerateObjectsUsingBlock или для

Помимо очевидных отличий: Используйте, enumerateObjectsUsingBlockкогда вам нужен и индекс, и объект Не используйте, enumerateObjectsUsingBlockкогда вам нужно изменить локальные переменные (я ошибся, см. Ответ bbum) Является ли в enumerateObjectsUsingBlockцелом считается лучше или хуже , если for...

146
Объявите параметр метода блока без использования typedef

Можно ли указать параметр блока метода в Objective-C без использования typedef? Должно быть, как указатели на функции, но я не могу использовать синтаксис победы без использования промежуточного определения типа: typedef BOOL (^PredicateBlock_t)(int); - (void)...

144
Сохраните закрытие как переменную в Swift

В Objective-C вы можете определить вход и выход блока, сохранить один из тех блоков, которые передаются в метод, а затем использовать этот блок позже: // in .h typedef void (^APLCalibrationProgressHandler)(float percentComplete); typedef void (^APLCalibrationCompletionHandler)(NSInteger...

101
Альтернативы dispatch_get_current_queue () для блоков завершения в iOS 6?

У меня есть метод, который принимает блок и блок завершения. Первый блок должен работать в фоновом режиме, а блок завершения должен выполняться в той очереди, в которой был вызван метод. Последнее я всегда использовал dispatch_get_current_queue(), но похоже, что он устарел в iOS 6 или выше. Что...