2012-11-06 2 views
0

안녕하세요, GCD를 사용하여 인터넷에서 사진을 다운로드하려고합니다. 이미지가 다운로드 된 후 클래스가 이미지가 다운로드되었음을 알리도록 대리자를 호출합니다. 여기 프로토콜 대리인이 호출되지 않습니다.

내가 이미지 여기

-(void)getVenuePhotos:(NSString *)venueID 
{ 
    dispatch_queue_t getVenuePhotos = dispatch_queue_create ("getVenuePhotos" , NULL); 
    dispatch_async (getVenuePhotos, ^{ 

     //Download image, Lots of code not displaying 
     UIImage *image = [[UIImage alloc] initWithData:photoData]; 

     dispatch_async(dispatch_get_main_queue(),^{ 
      //This delegate doesn't get called 
      [self.delegate gotVenuePhotos:image]; 
     }); 
    }); 
    dispatch_release (getVenuePhotos); 
} 

을 다운로드하는 데 사용하는 코드 내 POIPhoto.h

@protocol POIPhotoProtocol <NSObject> 
-(void)gotVenuePhotos:(UIImage *)image; 
@end 

@interface POIPhoto : NSObject 

-(void)getVenuePhotos:(NSString *)venueID; 

@property(nonatomic, weak) id <POIPhotoProtocol> delegate; 

@end 

내 프로토콜을 구현 그리고 내 수업 시간에 내가 다시

을 전화를 할 방법입니다
@interface PoiDetailViewController : UIViewController <POIPhotoProtocol> 

그리고 마침내 나는 프로토콜 메소드를 구현

-(void)gotVenuePhotos:(UIImage *)image 
{ 
    self.venuePhoto.image = image; 
} 

문제는 gotVenuePhotos도 내 이미지 다운로더에 불구 [self.delegate gotVenuePhotos:image];가 대리자를 설정하지 않기 때문에 문제가 일어나고

+5

: 당신의 viewDidLoad에서 같은 대리자를 설정합니다. – Hemang

답변

2

호출되는 호출되지 없구요 것입니다. 그것은 self``에 대리자를 설정해야 할 수도 있습니다

self.delegate = self; 
+0

감사합니다. 나는 그것을 놓쳤다 고 믿을 수 없습니다. –

+0

@JohandeKlerk : 기쁨으로. 코멘트 주셔서 감사합니다 :) –

관련 문제