別のスレッドを作成しましたが、その機能は正常に機能しています。ただし、UIControllers を使用できない新しいスレッドの場合のみです。例として、新しいスレッドで UIAlerview を使用できませんでした。どのように私はそれを愛することができますか?私の試したコードは以下です。
- (IBAction)btnCopyImage:(id)sender
{
[NSThread detachNewThreadSelector:@selector(DownloadCheck) toTarget:self withObject:nil];
// [self performSelectorOnMainThread:@selector(DownloadCheck) withObject:nil waitUntilDone:NO];
NSLog(@"My name is ");
int sum =0;
for (int i=1; i<=1000; i++)
{
sum =sum+i;
}
NSLog(@"sum %d",sum);
}
-(void)DownloadCheck
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Download"];
NSString* saveDialogURL = @"/Volumes/Inbox/7. Debugging and Troubleshooting.zip";
NSString* fileNameWithExtension = saveDialogURL.lastPathComponent;
NSLog(@"path %@ ",fileNameWithExtension);
NSString *pathWithExtention=[NSString stringWithFormat:@"%@/%@", path,fileNameWithExtension];
NSLog(@"path %@",pathWithExtention);
//Remove existing file
NSFileManager *filemgr;
filemgr = [NSFileManager defaultManager];
NSError *error;
[filemgr removeItemAtPath:pathWithExtention error:&error];
//Copy file to i phone created directory
if ([filemgr copyItemAtPath: saveDialogURL toPath: pathWithExtention error: NULL] == YES)
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Download"
message:@"Downloaded Sucessfully"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[alertView show];
NSLog (@"Copy successful");
}
else
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Download Faild"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[alertView show];
NSLog (@"Copy Faild");
}
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
[self performSelectorOnMainThread:@selector(DownloadCheck) withObject:nil waitUntilDone:NO];
これは同じスレッドで動作しているため使用できません。
では、同じコードを使用してどうすればよいですか?