UINavigationController にビューが埋め込まれています。このビューには、UITableViewController に進むボタンがあります。UINavigationcontroler の UITableViewController に到着したら、ファイルをアップロードするためのボタンを追加します。ファイルのアップロード操作は、dispatch_async 内で実行されます。dispatch_async が完了したら、メッセージが完了した UIAlertView を追加します。UINavigationController からの戻るボタンと dispatch_async が完了していないため、アプリがクラッシュするという問題があります。私はどこで間違っていますか?私のコードの後、ありがとう、Vincenzo
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_async(queue, ^ {
BOOL success;
NSURL * url;
NSString *fileNameUrl = [@"ftp://xxx.xxx.xxx.xxx/" stringByAppendingString:nameFile];
url = [[NetworkManager sharedInstance]smartURLForString:fileNameUrl];
success = (url != nil);
if ( ! success) {
NSLog(@"Invalid URL");
} else {
self.fileStream = [NSInputStream inputStreamWithData:dataAsset];
assert(self.fileStream != nil);
[self.fileStream open];
self.networkStream = CFBridgingRelease(
CFWriteStreamCreateWithFTPURL(NULL, (__bridge CFURLRef) url)
);
success = [self.networkStream setProperty:@"XXXX" forKey:(id)kCFStreamPropertyFTPUserName];
success = [self.networkStream setProperty:@"YYYYYY" forKey:(id)kCFStreamPropertyFTPPassword];
self.networkStream.delegate = self;
[self.networkStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.networkStream open];
[[NSRunLoop currentRunLoop]run];
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"SUCCESS" message:@"Complete" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alertView show];
});
}
});