ดำเนินการวิธี App Delegate บนเธรดหลักจากเธรดรอง

ฉันมีแอพ Iphone ที่มี 2 เธรด คนหนึ่งกำลังฟังเซิร์ฟเวอร์ และอีกคนกำลังทำ UIKit, OpenGl

ฉันต้องเรียกใช้วิธีการที่อัปเดตมุมมองจากเธรดรองที่กำลังฟังเซิร์ฟเวอร์บนเธรดหลักที่จัดการมุมมองดังนั้นฉันจึงใช้

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

แต่ด้วยเหตุผลบางอย่าง วิธีการนี้ไม่เคยถูกดำเนินการเลย การใส่เบรกพอยต์หรือ printf ที่จุดเริ่มต้นของเมธอดแสดงว่าไม่เคยถูกเรียกใช้ ฉันนิ่งงันจริงๆที่นี่ ฉันเคยใช้ performselectoronmainthread ในโปรแกรมเดียวกันเพื่ออัปเดตช่องข้อความและทำงานได้อย่างไม่มีที่ติ

แก้ไข:

คิดออกแล้ว :) ปัญหาคือวัตถุที่ฉันใช้ PerformSelectorOnMainThread ถูกตั้งค่าโดยเธรดนี้ก่อนที่วัตถุจะถูกเตรียมใช้งาน (แม้จะจัดสรร) ในเธรดหลัก ดังนั้น การอ้างอิงจึงชี้ไปที่ null และตัวเลือกไม่ได้รับการจดจำ

ขอบคุณสำหรับความช่วยเหลือ


person MEURSAULT    schedule 23.08.2010    source แหล่งที่มา
comment
คุณแน่ใจหรือไม่ว่าผู้รับสำหรับการโทรเพื่อดำเนินการ SelectorOnMainThread นั้นไม่ใช่ศูนย์?   -  person imaginaryboy    schedule 23.08.2010


คำตอบ (1)


ไม่ควรจะเป็น:

@selector(createGuessingView)

โดยไม่มีเครื่องหมายคำพูด

--

แก้ไข (เพื่อตอบสนองต่อความคิดเห็น)

ลายเซ็นสำหรับวิธีการของคุณคืออะไร? ถ้ามัน:

- (void)createGuessingView:(id)something

คุณควรจำเครื่องหมายโคลอนเช่นเดียวกับใน @selector(createGuessingView:)

person No one in particular    schedule 23.08.2010
comment
โอ้ ใช่แล้ว ขอโทษด้วย นั่นคือสิ่งที่ฉันมี ฉันเพิ่งคัดลอกมันผิด มีวิธีอื่นอีกไหม - person MEURSAULT; 23.08.2010
comment
ลายเซ็นคือ - (เป็นโมฆะ) createGuessingView; โดยไม่มีพารามิเตอร์ - person MEURSAULT; 23.08.2010
comment
คุณกำลังเรียกใช้เมธอด actSelectorOnMainThread บนอินสแตนซ์ออบเจ็กต์ที่มีเมธอด createGuessingView หรือไม่ - person No one in particular; 23.08.2010