【发布时间】:2014-01-06 10:19:12
【问题描述】:
我有以下功能
- (NSArray*) calendarMonthView:(TKCalendarMonthView*)monthView marksFromDate:(NSDate*)startDate toDate:(NSDate*)lastDate{
AppDelegate* appDelegate = [UIApplication sharedApplication].delegate;
_currentStart = startDate;
_currentEnd = lastDate;
if(appDelegate.internetActive){
Webservice *web = [[Webservice alloc]init];
[web fetchAppointmentsOnCompletionFor:startDate andEnd:lastDate OnCompletion:^(BOOL finished) {
if(finished){
[self generateRandomDataForStartDate:startDate endDate:lastDate];
// NOW return the self.dataArray
}
}];
}
return self.dataArray;
}
当completionblock 完成后,我不知道如何返回self.dataArray。因为我的 self.dataArray 填充在方法 generateRandomDataForStartDate:startDate 中。所以目前该函数总是返回一个空数组。
【问题讨论】:
-
self.dataArray 你被声明它是如何操作任何其他数据
-
您误解了块的工作原理,从评论返回的内容取决于块的返回类型\
-
你需要阻塞函数的执行直到完成的块被执行或者从 generateRandomDataForStartDate:startDate 方法返回数组
-
你为什么在那里使用块?您可以进行同步 Web 服务调用并返回数组。此处的 Web 服务调用是异步的,因此控件将在调用后立即返回。
标签: ios iphone objective-c objective-c-blocks