簡體   English   中英

代表設置不正確

[英]Delegate not being set correctly

我正在做一個項目,我的UIWebview類需要從DownloadView類執行一個方法

我正在使用開源項目https://github.com/robertmryan/download-manager

當此代碼執行該方法時:

 DownloadTableView *download = [[DownloadTableView alloc] init];
 [download queueAndStartDownloads:_downloadURL];

此行未設置委托權限

  self.downloadManager = [[DownloadManager alloc] initWithDelegate:self];

整個開始下載方法

- (void)queueAndStartDownloads:(NSURL *)url
{


NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *downloadFolder = [documentsPath stringByAppendingPathComponent:@"downloads"];

if ([[NSFileManager defaultManager] fileExistsAtPath:downloadFolder])       //Does file exist?
{
    if (![[NSFileManager defaultManager] createDirectoryAtPath:downloadFolder
                                   withIntermediateDirectories:NO
                                                    attributes:nil
                                                         error:nil]) {

    }
}

self.downloadManager = [[DownloadManager alloc] initWithDelegate:self];
self.downloadManager.maxConcurrentDownloads = 4;


    NSString *downloadFilename = [downloadFolder stringByAppendingPathComponent:[url lastPathComponent]];
    [self.downloadManager addDownloadWithFilename:downloadFilename URL:url];


self.cancelButton.enabled = YES;
self.startDate = [NSDate date];
NSLog(@"DOwnling");
[self.downloadManager start];

}

我的DownloadView類中的方法無法執行

 - (void)didFinishLoadingAllForManager:(DownloadManager *)downloadManager

{

假設您的代碼在ARC下,從代碼中我知道DownloadTableView *download是局部變量。 因此, DownloadTableView對象在聲明它的方法范圍結束后被釋放。 因此,委托方法不會被調用,因為委托已釋放。 為避免這種情況,可以將DownloadTableView對象創建為實例變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM