2010-05-12 6 views
2

신생아의 질문입니다.하지만 여기서는 새로운 언어와 프레임 워크를 배우고 있으며 "진실은 무엇입니까?"라는 질문에 대답하려고합니다. Obj-C와 관련이있다.목표 -C 정의

네트워크를 통해 이미지를 지연로드하려고합니다.

내 AppDelegate에의
@property (nonatomic, retain) UIImage image; 
@property (nonatomic, retain) UIImage thumbnail; 

, 내 이벤트에 대한 데이터 (이 지역 예술 이벤트 목록을 보여줍니다 응용 프로그램입니다)의 무리를 가져, 사전 세트 : I는 다음과 같은 속성을 가진 데이터 클래스라는 이벤트가 각 event.image를 내 기본 "no-image.png"로 변경하십시오.

그럼 내가이 일을 보려면있는 UITableViewController에, 나는 수행

if (thisEvent.image == NULL) { 
    NSLog(@"Going for this item's image"); 
    UIImage *tempImage = [UIImage imageWithData:[NSData dataWithContentsOfURL: 
        [NSURL URLWithString: 
        [NSString stringWithFormat: 
        @"http://www.mysite.com/content_elements/%@_image_1.jpg", 
           thisEvent.guid]]]]; 
    thisEvent.image = tempImage; 

} 

우리는 그 NSLog 호출을 결코. thisEvent.image를 NULL로 테스트하는 것은 중요하지 않습니다. == nil도 시도했지만 작동하지 않습니다.

답변

4

게으른 로딩은 다음과 같이 표시됩니다.

감사합니다,

당신은 정말 당신이 테이블 셀을 구축으로 웹에서 이미지를로드하지 않으
+1

오. 내 Event 모델 클래스에서 바로 그 일을하는 것입니다. 이는 테이블 뷰 컨트롤러에서 셀을 구성하여 항목을 유지하는 것보다 훨씬 낫습니다. 감사! –

4

이미지를 no-image.png로 설정하면 개체 값에 nil이 사용됩니다 (Objective-C는 개체 값에 nil을 사용하므로 동일하지 만 다른 목적을 갖는 NULL 대신이 값을 사용해야합니다). 값).

@property (nonatomic, read-only) UIImage *image; 

- (UIImage *)image { 
    if (!image) { 
     image = [[UIImage imageWithData:[NSData dataWithContentsOfURL: 
       [NSURL URLWithString: 
       [NSString stringWithFormat: 
       @"http://www.mysite.com/content_elements/%@_image_1.jpg", 
          thisEvent.guid]]]] retain]; 
    } 

    return image; 
} 

과의 dealloc에서 이미지를 해제하는 것을 잊지 마세요 :

2

, 테이블 스크롤이 정말 느려집니다.

LazyTableImages의 수행 방법은 this SO question을 참조하십시오.

+0

내 다음 SO 질문은 "내 테이블 스크롤이 왜 그렇게 느린가?"입니다. 감사합니다. –