উত্তর:
হ্যাঁ, এখানে [এনএসটি স্ট্রিট স্লিপফোরটাইম অন্তর্বর্তী:]
(ঠিক তাই আপনি ভবিষ্যতের প্রশ্নগুলির জন্য জানেন, অবজেক্টিভ-সি হ'ল ভাষা objects
জন্য স্লিপিং এক সেকেন্ড জাভা:
Thread.sleep(1000);
জন্য স্লিপিং এক সেকেন্ড উদ্দেশ্য সি:
[NSThread sleepForTimeInterval:1.0f];
ঘুমাচ্ছিস কেন? আপনি যখন ঘুমাবেন, আপনি ইউআই এবং অন্য কোনও থ্রেডে নয় এমন কোনও পটভূমি ইউআরএল অবরুদ্ধ করছেন (এনএসআরএল অ্যাসিঙ্ক্রোনাস পদ্ধতিগুলি এখনও বর্তমান থ্রেডে চালিত হয়)।
আপনি যা চান তা হ'ল সম্ভাবনাগুলি হ'ল পারফরমেক্টসলেক্টর: উইথ অবজেক্ট: আফটারডেলি। এটি এনএসওবজেক্টের একটি পদ্ধতি যা আপনি পরে কোনও প্রাক নির্ধারিত বিরতিতে কোনও পদ্ধতিতে কল করতে ব্যবহার করতে পারেন - এটি একটি কল নির্ধারিত করে যা পরবর্তী সময়ে সঞ্চালিত হবে, তবে থ্রেড হ্যান্ডলগুলি (অন্যান্য ইউআই এবং ডেটা বোঝার মতো) এর সমস্ত জিনিসই হবে এখনও অবিরত।
আপনি যদি ঘুমের জন্য এনএসটিড্রেড স্লিপফোরটাইমআইনটারভাল (মন্তব্য কোড) ব্যবহার করেন তবে আনার তথ্যটি অবরুদ্ধ করা হবে, তবে + [এনএসটি ফ্রেড স্লিপফোর্ডটাইমইন্টারওয়াল:] (চেকল্ড পদ্ধতি) আনয়ন ডেটা অবরোধ করবে না।
নীচের মত আমার উদাহরণ কোড:
- (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];
}
}