ใน Java Thread.sleep()
คุณสามารถระงับการดำเนินการเธรดปัจจุบันสำหรับระยะเวลาในการใช้ มีสิ่งนี้ใน Objective-C หรือไม่?
ใน Java Thread.sleep()
คุณสามารถระงับการดำเนินการเธรดปัจจุบันสำหรับระยะเวลาในการใช้ มีสิ่งนี้ใน Objective-C หรือไม่?
คำตอบ:
ใช่มี+ [NSThread sleepForTimeInterval:]
(เพื่อให้คุณทราบสำหรับคำถามในอนาคต Objective-C คือภาษานั้นเองไลบรารีของวัตถุ (อย่างน้อยหนึ่งในนั้น) คือ Cocoa)
การนอนหนึ่งวินาทีใน Java:
Thread.sleep(1000);
การนอนเป็นเวลาหนึ่งวินาทีใน Objective C:
[NSThread sleepForTimeInterval:1.0f];
ทำไมคุณถึงนอนหลับ? เมื่อคุณเข้าสู่โหมดสลีปคุณกำลังบล็อก UI และการโหลด URL พื้นหลังที่ไม่ได้อยู่ในเธรดอื่น ๆ (โดยใช้วิธีการอะซิงโครนัส NSURL ยังคงทำงานบนเธรดปัจจุบัน)
โอกาสคือสิ่งที่คุณต้องการจริงๆคือ performSelector: withObject: AfterDelay นั่นเป็นวิธีการใน NSObject ที่คุณสามารถใช้เพื่อเรียกใช้เมธอดในช่วงเวลาที่กำหนดไว้ล่วงหน้าในภายหลังซึ่งจะกำหนดเวลาการโทรที่จะดำเนินการในภายหลัง แต่สิ่งอื่น ๆ ทั้งหมดที่จัดการเธรด (เช่น UI และการโหลดข้อมูล) จะ ยังคงดำเนินต่อไป
แน่นอนคุณสามารถใช้การโทร Unix sleep () และ usleep () มาตรฐานได้เช่นกัน (ถ้าเขียน Cocoa ฉันจะอยู่กับ [NSThread sleepForTimeInterval:])
หากคุณใช้ NSThread sleepForTimeInterval (รหัสที่แสดงความคิดเห็น) เพื่อเข้าสู่โหมดสลีปการดึงข้อมูลจะถูกบล็อก แต่ + [NSThread sleepForTimeInterval:] (วิธี checkLoad) จะไม่บล็อกการดึงข้อมูล
รหัสตัวอย่างของฉันดังต่อไปนี้:
- (void)viewDidAppear:(BOOL)animated
{
//....
//show loader view
[HUD showUIBlockingIndicatorWithText:@"Fetching JSON data"];
// while (_loans == nil || _loans.count == 0)
// {
// [NSThread sleepForTimeInterval:1.0f];
// [self reloadLoansFormApi];
// NSLog(@"sleep ");
// }
[self performSelector:@selector(checkLoad) withObject:self afterDelay:1.0f];
}
-(void) checkLoad
{
[self reloadLoansFormApi];
if (_loans == nil || _loans.count == 0)
{
[self performSelector:@selector(checkLoad) withObject:self afterDelay:1.0f];
} else
{
NSLog(@"size %d", _loans.count);
[self.tableView reloadData];
//hide the loader view
[HUD hideUIBlockingIndicator];
}
}
usleep () สามารถใช้เป็น ive เพื่อหยุดเธรดปัจจุบันชั่วคราวได้ในบางครั้ง