使用AVAssetReader和ARC绘制波形

时间:2012-03-01 00:39:21

标签: iphone objective-c automatic-ref-counting core-audio waveform

我正在尝试在使用ARC时应用Unsynchronized的答案(Drawing waveform with AVAssetReader)。只需要进行一些修改,主要是发布语句。非常感谢您的回答!我正在使用针对iOS5设备的Xcode 4.2。

但是当我试图调用整个事情的时候,我在最后的一个声明中陷入困境。

此处显示的方法:

-(void) importMediaItem {

    MPMediaItem* item = [self mediaItem];

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

        [self displayWaveFormImage];
    }];

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

在调用initWithMPMediaItem时,我收到以下错误:

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;

现在试图将我的头围绕这几个小时,但无济于事。我的方法声明对于这种方法是错误的吗?谢谢!

1 个答案:

答案 0 :(得分:2)

看起来initWithMPMediaItem应该被声明为UIImage的初始值设定项。因此,您应该在头文件中的UIImage类别中声明它:

@interface UIImage (MPMedia)

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

@end