Melakukan metode Delegasi Aplikasi pada thread utama dari thread sekunder

Saya memiliki aplikasi Iphone dengan 2 utas. Yang satu mendengarkan server, dan yang lainnya melakukan hal-hal UIKit, OpenGl.

Saya perlu menjalankan metode yang memperbarui tampilan dari utas sekunder yang mendengarkan server di utas utama yang menangani tampilan, jadi saya menggunakan

performSelectorOnMainThread:@selector"createGuessingView" withObject:nil waitUntilDone:YES

tetapi karena alasan tertentu, metode ini tidak pernah dijalankan. Menempatkan breakpoint atau printf di awal metode menunjukkan bahwa metode tersebut tidak pernah dipanggil. Saya benar-benar bingung di sini. Saya telah menggunakan performselectoronmainthread dalam program yang sama untuk memperbarui bidang teks dan itu bekerja dengan sempurna.

sunting:

Menemukan jawabannya :) Masalahnya adalah objek yang saya gunakan performSelectorOnMainThread disetel oleh thread ini sebelum objek diinisialisasi (bahkan dialokasikan) di thread utama. Oleh karena itu, referensi menunjuk ke nol, dan pemilih tidak dikenali.

Terima kasih untuk bantuannya


person MEURSAULT    schedule 23.08.2010    source sumber
comment
Apakah Anda yakin penerima panggilan untuk melakukanSelectorOnMainThread bukan nihil?   -  person imaginaryboy    schedule 23.08.2010


Jawaban (1)


Bukankah seharusnya:

@selector(createGuessingView)

tanpa tanda kutip.

--

EDIT (sebagai tanggapan terhadap komentar)

Apa tanda tangan untuk metode Anda? Jika itu:

- (void)createGuessingView:(id)something

maka Anda harus mengingat titik dua, seperti pada @selector(createGuessingView:)

person No one in particular    schedule 23.08.2010
comment
oh iya, maaf, itu yang aku punya, aku hanya salah menyalinnya, ada ide lain? - person MEURSAULT; 23.08.2010
comment
tanda tangannya adalah -(void) createGuessingView; tanpa parameter - person MEURSAULT; 23.08.2010
comment
Apakah Anda memanggil metode performSelectorOnMainThread pada instance objek yang memiliki metode createGuessingView? - person No one in particular; 23.08.2010