2

別のスレッドを作成しましたが、その機能は正常に機能しています。ただし、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];これは同じスレッドで動作しているため使用できません。

では、同じコードを使用してどうすればよいですか?

4

0 に答える 0