【发布时间】:2012-03-19 12:33:30
【问题描述】:
我正在尝试在使用 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;
我已经尝试了几个小时来解决这个问题,但无济于事。对于这种类型的方法,我的方法声明是否错误?谢谢!
【问题讨论】:
-
主要问题是您在 UIImage 上调用 initWithMPMediaItem。它被声明为你的类中的一个方法(我认为,直到你向我们展示它声明的标题才能真正知道)所以它期望在 self 上被调用(我假设它不是 UIImage)。你需要决定你希望这个方法如何工作——它应该在 UIImage 类别中吗?
标签: iphone objective-c automatic-ref-counting core-audio waveform