我使用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);
}