Результаты поиска по запросу "objective-c-blocks"

2 ответа

 блок, да. Блоки являются обычными объектами Objective-C.

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

1 ответ

Это просто совпадение; стек не очищается при разрушении области цикла for (). Массив не содержит блоков, он содержит ссылки на, теперь уже не существующий, блочный слот в стеке в цикле for (). Если бы вы скомпилировали это с оптимизацией (или использовали функцию чистого стека GC), вы бы, вероятно, увидели другое [неопределенное] поведение.

ю, что блоки создаются в стеке. Однако, поскольку у меня недостаточно знаний о стеке и локальных переменных, я не могу понять, почему я должен переместить блок в кучу, чтобы получить ожидаемый результат. Интуитивно я чувствую, что блок кода блока ...

3 ответа

продолжить это обсуждение в чате

тироватьЯ прочитал несколько статей о блоках и быстром перечислении и GCD и тому подобное. @Bbum, который написал много статей на тему GCD и блоков, говорит, что методы перечисления блоков всегда бывают быстрее или быстрее, чем ...

ТОП публикаций

3 ответа

Я отредактировал ответ Казуки, чтобы объяснить это.

из шаблонов, представленных в докладе WWDC 2010 «Блоки и Grand Central Dispatch», было использование вложенных вызовов dispatch_async для выполнения трудоемких задач в фоновом потоке, а затем обновление пользовательского интерфейса в главном ...

3 ответа

 также написал об этом. (Если bbum приходит сюда и говорит, что я идиот по этому поводу, то послушай его, но я думаю, что я прямо здесь.)

я есть код, который по сути сводится к этому: -(void)doSomethingWithBlock:(BlockTypedef)block { [Foo doSomethingElseWithBlock:^() { block(); }]; }Foo doSomethingElseWithBlock: звонкиBlock_copy а такжеBlock_release на блоке, который он получает. ...

6 ответов

Леви прав

могу заставить блок выполняться синхронно или заставить функцию ждать обработчик перед оператором return, чтобы данные могли быть переданы обратно из блока? -(id)performRequest:(id)args { __block NSData *data = nil; ...

2 ответа

Как использовать dispatch_queue_set_specific () и dispatch_get_specific ()

Мне трудно найти хорошие примеры того, как использовать эти функции. static void * kQueue1Key = "key1"; static void * kQueue2Key = "key2"; dispatch_queue_t queue1 = dispatch_queue_create("com.company.queue1", DISPATCH_QUEUE_SERIAL); ...

2 ответа

Второе исправление заключается в использовании __block

у установить указатель NSError изнутри блока в проекте, используя автоматический подсчет ссылок. Далее следует упрощенная версия моего кода: - (BOOL)frobnicateReturningError:(NSError **)error { NSArray *items = [NSArray arrayWithObjects:@"One", ...

3 ответа

Как вернуть переменную из блока внутри метода?

Скажем, у меня есть этот метод, который с учетом URL возвращает UIImage: - (void)getUIImageFromURL:(NSURL *)URL { NSURLRequest *request = [NSURLRequest requestWithURL:URL]; AFHTTPRequestOperation *imageOperation = [[AFHTTPRequestOperation alloc] ...

8 ответов

Это означает, что переменная, к которой относится префикс, доступна для использования в блоке.

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