2016-10-10 6 views
2

Я разрабатываю пользовательское приложение для камеры. Что я делаю, я фотографирую камеру и показываю ее в одном и том же нижнем углу экрана.Как использовать NSOperation & NSOperationQueue в Objective-C?

Я храню изображение в локальных словарях и пути к каталогу NSDocument. Если картинка находится в локальных словарях, она будет взята из локального словаря, иначе она будет взята из пути каталога NSDocument.

После получения предупреждения о сохранении памяти, я просто нул словарь, поэтому он будет принимать изображения из пути каталога NSDocument.

Использование обоих изображений будет показывать изображения в медленном процессе. Мой пользовательский интерфейс не так хорош в показе изображений.

Поэтому я хочу сохранить изображения в пути каталога NSDocument, используя NSOperation.

У меня нет большого знания о NSOperation. Я искал в google, я просто получаю быстрые учебные пособия, пока мне нужна помощь в Objective C.

Итак, пожалуйста, кто-нибудь может объяснить NSOperation и NSOperationQueue примерами?

+0

Запросы на учебные пособия и другие ресурсы за пределами площадки здесь не по теме. Чтобы сохранить ваш вопрос после закрытия, я отредактировал вне темы требования из вашего вопроса. Вы всегда можете откатить, если хотите, но если вы это сделаете, сообщество должно будет закрыть его – NSNoob

ответ

2

Применить это для каждой работы:

 // Allocated here for succinctness. 
     NSOperationQueue *q = [[NSOperationQueue alloc] init]; 

     /* Data to process */ 
     NSData *data = [@"Hello, I'm a Block!" dataUsingEncoding: NSUTF8StringEncoding]; 

     /* Push an expensive computation to the operation queue, and then 
     * display the response to the user on the main thread. */ 
     [q addOperationWithBlock: ^{ 
      /* Perform expensive processing with data on our background thread */ 
      NSString *string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; 



      /* Inform the user of the result on the main thread, where it's safe to play with the UI. */ 

      /* We don't need to hold a string reference anymore */ 

     }]; 

И вы также можете применять без NSOperationQueue:

 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
      // Your Background work 

      dispatch_async(dispatch_get_main_queue(), ^{ 
       // Update your UI 


      }); 
     }); 

Попробуйте эти больше:

  1. NSOperationQueue addOperationWithBlock return to mainQueue order of operations

  2. http://landonf.org/code/iphone/Using_Blocks_1.20090704.html

  3. https://videos.raywenderlich.com/courses/introducing-concurrency/lessons/7

+0

Хорошо. я изменил его. Спасибо. Пожалуйста, отмените, если вы забыли его, пожалуйста[email protected] –

+0

Спасибо Jamshed Alam, На самом деле я сохраняю изображение в пути каталога nsdocument в классе sigleton, где мне нужно поместить код для сохранения словаря. Где я должен разместить эти два кода в моем одиночном классе? – kavi

+0

Применить одно NSOperationQueue для каждого изображения. Таким образом, код будет в цикле. Пример: for (;;) {NSOperationQueue * op ...... весь код ...}. Попробуйте .. надеюсь, вы сможете это сделать. Если вы не можете этого сделать, вставьте несколько кодов. –

1

Swift3 Создание очереди операции

lazy var imgSaveQueue: OperationQueue = { 
    var queue = OperationQueue() 
    queue.name = "Image Save Queue" 
    queue.maxConcurrentOperationCount = 1 
    return queue 
}() 

Добавить операцию к нему

imgSaveQueue.addOperation(BlockOperation(block: { 
     //your image saving code here 
    })) 

Для Objective C:

[[NSOperationQueue new] addOperationWithBlock:^{ 

     //code here 

}]; 
+0

Спасибо @Hunaid Hassan, мне нужно это в objectivec, Пожалуйста, поделитесь этим – kavi

+0

'[[NSOperationQueue new] addOperationWithBlock:^{// код здесь }] ' –

+0

Спасибо @Hunaid Хассан, мне нужен полный учебник, пожалуйста, поделитесь ссылкой на учебное пособие для объектного c – kavi

 Смежные вопросы

  • Нет связанных вопросов^_^