2

ARC를 사용하는 동안 Unsynchronized의 대답 (Drawing waveform with AVAssetReader)을 적용하려고합니다. 주로 몇 가지 수정이 필요했으며 대부분은 발표문이었다. 좋은 답변에 많은 감사드립니다. iOS5 기기를 타겟팅하는 Xcode 4.2를 사용하고 있습니다.AVAssetReader 및 ARC가있는 웨이브 폼 그리기

하지만 모든 것을 불러내는 동안 끝에 한 문장에 갇혀 있습니다.

방법은 여기에 표시 :

나는 initWithMPMediaItem 클래스 헤더에 선언하는 방법이 있나요 때문에
Automatic Reference Counting Issue. Receiver type 'UIImage' for instance message 
does not declare a method with selector 'initWithMPMediaItem:completionBlock:' 

, 정말 '돈 : 호출에

-(void) importMediaItem { 

    MPMediaItem* item = [self mediaItem]; 

    waveFormImage = [[UIImage alloc ] initWithMPMediaItem:item completionBlock:^(UIImage* delayedImagePreparation){ 

     [self displayWaveFormImage]; 
    }]; 

    if (waveFormImage) { 
     [self displayWaveFormImage]; 
    } 
} 

나는 다음과 같은 오류가 initWithMPMediaItem하기 왜이 오류가 발생하는지 이해하지 못합니다.

- (id) initWithMPMediaItem:(MPMediaItem*)item 
     completionBlock:(void (^)(UIImage* delayedImagePreparation))completionBlock; 

몇 시간 동안 내 머리를 감싸려고했지만 아무 소용이 없습니다. 이 메서드는 내 메서드 선언이 잘못 되었습니까? 감사!

+0

주요 문제는 당신이있는 UIImage에 initWithMPMediaItem를 호출하는 것입니다. 그것은 클래스 (나는 당신이 우리에게 선언 된 헤더를 보여줄 때까지는 알 수 없다)에서 클래스의 메쏘드로 선언되기 때문에 자기 자신 (나는 UIImage가 아니라고 가정)에 호출 될 것으로 기대하고있다. UIImage 범주에 있으면이 메서드가 어떻게 작동 할 것인지 결정해야합니다. – sosborn

답변

2

UIImage의 경우 이니셜 라이저로 선언해야합니다 (initWithMPMediaItem). 그래서 당신은 당신의 헤더 파일에 UIImage 카테고리 내에서 선언해야합니다

@interface UIImage (MPMedia) 

- (id) initWithMPMediaItem:(MPMediaItem*)item 
    completionBlock:(void (^)(UIImage* delayedImagePreparation))completionBlock; 

@end 
+0

답변을 입력했는데 성공했습니다! 헤더에있는 다른 모든 메서드를 사용하여이 메서드를 처리했습니다. 배울 새로운 새로운 것. 감사합니다 sch와 sosborn! – JimVision

관련 문제