Ожидается ли, что UIImageWriteToSavedPhotosAlbum завершится синхронно, когда для всех параметров селектора будет передан nil? - PullRequest
1 голос
/ 16 октября 2011

Документация для UIImageWriteToSavedPhotosAlbum редка, когда речь идет о том, будет ли он блокироваться или нет.Я понимаю, что если вы передадите селекторы завершения, он немедленно вернется и асинхронно запустится до завершения, вызывая указанные селекторы после завершения.Мой вопрос: если я передам ноль для селекторов завершения, завершится ли он до возвращения?

Я считаю, что ответ - Да, однако я хотел бы знать наверняка.

Для справки,Вот стек вызова функции в фоновом потоке:

Thread 7:
0  libsystem_kernel.dylib            0x3304a060 semaphore_wait_trap
1  libdispatch.dylib                0x3264644a _dispatch_thread_semaphore_wait$VARIANT$up
2  libdispatch.dylib                0x326446ae _dispatch_barrier_sync_f_slow
3  libdispatch.dylib                0x3264462c dispatch_barrier_sync_f$VARIANT$up
4  libdispatch.dylib                0x32644288 dispatch_sync_f$VARIANT$up
5  CoreData                          0x3536417c -[NSManagedObjectContext performBlockAndWait:]
6  CoreData                          0x352fcf30 -[NSManagedObjectContext setPersistentStoreCoordinator:]
7  PhotoLibraryServices              0x31f28cb8 -[PLManagedObjectContext initWithConcurrencyType:useSharedPersistentStoreCoordinator:]
8  PhotoLibraryServices              0x31f28ae4 +[PLManagedObjectContext contextForPhotoLibrary:]
9  PhotoLibraryServices              0x31f28706 -[PLPhotoLibrary(Protected) loadDatabase]
10  PhotoLibraryServices              0x31ef220e -[PLPhotoLibrary initWithPath:canTriggerDatabaseUpdate:]
11  PhotoLibraryServices              0x31f3777e __42+[PLSharedPhotoLibrary sharedPhotoLibrary]_block_invoke_0
12  libdispatch.dylib                0x32646570 dispatch_once_f$VARIANT$up
13  PhotoLibraryServices              0x31f3773c +[PLSharedPhotoLibrary sharedPhotoLibrary]
14  PhotoLibraryServices              0x31ef9d5c __withSavedPhotosAlbumUUID_block_invoke_0
15  libdispatch.dylib                0x32646570 dispatch_once_f$VARIANT$up
16  PhotoLibraryServices              0x31ef9124 withSavedPhotosAlbumUUID
17  PhotoLibraryServices              0x31ef9066 PLSaveImageToCameraRoll
18  UIKit                            0x333cf5e6 UIImageWriteToSavedPhotosAlbum

1 Ответ

1 голос
/ 16 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...