我正在使用 sudzc 代码调用 Web 服务方法,它有一个回调处理程序,在收到的响应上被调用。
我的问题是我有一个实用程序类,其中有一个调用服务的方法。这个方法是从后台的视图控制器类和选择器中调用的。
在实用程序方法中,我有一个用于编写服务调用逻辑的 for 循环,在此我想等待获取下一条记录,直到调用回调方法并收到结果。我已经做了一段时间,但是在调用 Web 服务后检查我设置的标志的状态,然后在回调方法中将标志设置为 false 以获取下一行,它不起作用。
通过以下代码从视图控制器调用它:
FTPHelper *ftphelper= [[FTPHelper alloc]init];
[ftphelper performSelectorInBackground:@selector(FtpFilesAsyn) withObject:nil];
现在在实用程序类中,我创建了一个独立的静态线程:
if(myThread ==nil)
{
myThread=[[NSThread alloc] initWithTarget:self selector:@selector(SendFtpFile) object:nil];
}
[myThread start];
在选择器的方法调用中:
for (Employee *emp in empList)
{
do {
if(isSendingFl==YES)
{
//webserivce call here,
WebService *service=[WebService service];
[service SendFile:self action:@selector(FtpFileHandler:) imagefileStream:outputData filename: ftpFileName];
isSendingFl=YES;
}
} while (isSendingFl);
}
- (void) FtpFileHandler: (id) value {
NSString* result = (NSString*)value;
isSendingFl=NO;
NSLog(@"FtpFile returned the value: %@", result);
}