Pertanyaan yang diberi tag «objective-c-blocks»

Pemblokiran adalah implementasi penutupan Apple untuk C, yang juga tersedia untuk Objective-C dan C ++.


8
Apa arti kata kunci “__block”?
Apa sebenarnya arti __blockkata kunci dalam Objective-C? Saya tahu ini memungkinkan Anda untuk memodifikasi variabel dalam blok, tetapi saya ingin tahu ... Apa sebenarnya yang dikatakannya kepada kompiler? Apakah itu melakukan hal lain? Jika hanya itu yang dilakukannya, mengapa itu diperlukan? Apakah ada di dokumen di mana saja? (Saya tidak …

8
Tetapkan variabel di dalam Blok ke variabel di luar Blok
Saya mendapatkan kesalahan Variabel tidak dapat ditentukan (tidak ada __block type specifier) di telepon aPerson = participant;. Bagaimana saya bisa memastikan blok dapat mengakses aPersonvariabel dan aPersonvariabel dapat dikembalikan? Person *aPerson = nil; [participants enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { Person *participant = (Person*)obj; if ([participant.gender isEqualToString:@"M"]) { aPerson …


7
Blokir Daftar Sintaksis Deklarasi
Blok sintaksis di Objective C (dan memang C, saya kira) terkenal tidak sesuai. Melewati blok sebagai argumen terlihat berbeda dari mendeklarasikan blok sebagai ivar, yang terlihat berbeda dari typedefblok. Apakah ada daftar lengkap sintaksis blok-deklarasi yang bisa saya pertahankan untuk referensi cepat?

8
Bagaimana cara saya menghindari menangkap diri dalam blok ketika menerapkan API?
Saya memiliki aplikasi yang berfungsi dan saya sedang berusaha mengubahnya menjadi ARC di Xcode 4.2. Salah satu peringatan pra-cek melibatkan penangkapan dengan selfkuat di blok yang mengarah ke siklus penyimpanan. Saya telah membuat contoh kode sederhana untuk menggambarkan masalah ini. Saya percaya saya mengerti apa artinya ini tetapi saya tidak …

10
Menunggu hingga dua blok async dijalankan sebelum memulai blok lain
Saat menggunakan GCD, kami ingin menunggu sampai dua blok async dieksekusi dan dilakukan sebelum beralih ke langkah eksekusi selanjutnya. Apa cara terbaik untuk melakukannya? Kami mencoba yang berikut, tetapi sepertinya tidak berhasil: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block1 }); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block2 }); // wait until both …

9
Pertahankan siklus pada `self` dengan blok
Saya khawatir pertanyaan ini cukup mendasar, tetapi saya pikir ini relevan dengan banyak programmer Objective-C yang masuk ke blok. Apa yang saya dengar adalah bahwa karena blok menangkap variabel lokal yang dirujuk di dalamnya sebagai constsalinan, menggunakan selfdalam blok dapat menghasilkan siklus tetap, haruskah blok itu disalin. Jadi, kita seharusnya …

6
Kapan menggunakan enumerateObjectsUsingBlock vs. for
Selain perbedaan yang jelas: Menggunakan enumerateObjectsUsingBlock saat Anda membutuhkan indeks dan objek Jangan gunakan enumerateObjectsUsingBlockketika Anda perlu memodifikasi variabel lokal (saya salah tentang ini, lihat jawaban bbum) Apakah enumerateObjectsUsingBlockumumnya dianggap lebih baik atau lebih buruk ketika for (id obj in myArray)juga akan bekerja? Apa kelebihan / kekurangannya (misalnya performanya kurang …

5
Deklarasikan parameter metode blok tanpa menggunakan typedef
Apakah mungkin untuk menentukan parameter blok metode di Objective-C tanpa menggunakan typedef? Itu harus, seperti pointer fungsi, tapi saya tidak bisa menemukan sintaks yang menang tanpa menggunakan typedef perantara: typedef BOOL (^PredicateBlock_t)(int); - (void) myMethodTakingPredicate:(PredicateBlock_t)predicate hanya kompilasi di atas, semua ini gagal: - (void) myMethodTakingPredicate:( BOOL(^block)(int) ) predicate - (void) …


7
Menyimpan penutupan sebagai variabel dalam Swift
Di Objective-C, Anda bisa menentukan input dan output blok, simpan salah satu blok yang diteruskan ke metode, lalu gunakan blok itu nanti: // in .h typedef void (^APLCalibrationProgressHandler)(float percentComplete); typedef void (^APLCalibrationCompletionHandler)(NSInteger measuredPower, NSError *error); // in .m @property (strong) APLCalibrationProgressHandler progressHandler; @property (strong) APLCalibrationCompletionHandler completionHandler; - (id)initWithRegion:(CLBeaconRegion *)region completionHandler:(APLCalibrationCompletionHandler)handler …

7
Alternatif untuk dispatch_get_current_queue () untuk blok penyelesaian di iOS 6?
Saya memiliki metode yang menerima blok dan blok penyelesaian. Blok pertama harus berjalan di latar belakang, sedangkan blok penyelesaian harus berjalan dalam antrian apa pun yang dipanggil metode tersebut. Untuk yang terakhir saya selalu menggunakan dispatch_get_current_queue(), tetapi sepertinya itu sudah usang di iOS 6 atau lebih tinggi. Apa yang harus …
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.