2

我正在尝试在使用 ARC 时应用 Unsynchronized 的答案(使用 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;

几个小时以来一直试图围绕这个问题进行思考,但无济于事。对于这种类型的方法,我的方法声明是否错误?谢谢!

4

1 回答 1

2

看起来initWithMPMediaItem应该被声明为UIImage. UIImage所以你应该在你的头文件的一个类别中声明它:

@interface UIImage (MPMedia)

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

@end
于 2012-03-01T00:59:37.610 回答