2

ARCの使用中に非同期の答え(Drawing waveform with AVAssetReader)を適用しようとしています。ほとんどの場合、リリース文が必要になります。素晴らしい答えに感謝します!私はiOS5デバイスをターゲットにしたXcode 4.2を使用しています。AVAssetReaderとARCで波形を描く

しかし、すべてを呼び出そうとしている最中に、私は最後に1つのステートメントにこだわっています。

ここに示した方法:initWithMPMediaItemへの呼び出しで

-(void) importMediaItem { 

    MPMediaItem* item = [self mediaItem]; 

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

     [self displayWaveFormImage]; 
    }]; 

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

私は次のエラーを取得する:

Automatic Reference Counting Issue. Receiver type 'UIImage' for instance message 
does not declare a method with selector 'initWithMPMediaItem:completionBlock:' 

私は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