2011-02-01 113 views
0

的参数1仍然有问题,这部分代码:错误:不兼容的类型QTGetTimeInterval

@interface MYAccessMp3Tags: NSObject 
{ 
    NSTimeInterval duration; 
    NSTimeInterval currentTime; 
} 

-(NSTimeInterval) durationInSeconds; 
-(NSTimeInterval) currentTimeInSeconds; 
-(NSDictionary *) metadata; 
-(NSString *) metadataDescription; 
-(NSString *) loadStateDescription; 

@property (nonatomic) NSTimeInterval duration; 
@property (nonatomic) NSTimeInterval currentTime; 
@end 



@implementation MYAccessMp3Tags; 

@synthesize duration; 
@synthesize currentTime; 
-(NSTimeInterval)durationInSeconds 
{ 

    NSTimeInterval dur; 

    QTGetTimeInterval([self duration], &dur); 
    //error: incompatible type for argument 1 of QTGetTimeInterval 
    return duration; 
} 

-(NSTimeInterval)currentTimeInSeconds 
{ 
    NSTimeInterval currTime; 
    QTGetTimeInterval([self currentTime], &currTime); 
    //error: incompatible type for argument 1 of QTGetTimeInterval 
    return currentTime; 
}  

这里有什么错?

回答

0

我确定你不想使用[self currentTime]。返回您在.h中定义的属性currentTime,该属性为NSTimeInterval。你为什么要把它喂入QTGetTimeInterval

相反,我确定您希望获得QTMovie实例的durationcurrentTime

所以,假设你有QTMovie*movie。然后,[movie duration]返回QTTime,而不是NSTimeInverval。这是因为,从历史上看,QuickTime源于Cocoa/Objective-C的不同来源。这就是为什么你需要一个转换功能,如QTGetTimeInterval。所以,

QTMovie*movie= ... ; 
QTTime duration=[movie duration]; 
NSTimeInterval dur; 
QTGetTimeInterval(duration, &dur); 

应该工作。

+0

谢谢。这部分没有“错误”。是返回YES?得到了“未捕获的异常”,但在代码的其他部分可能有错误。 – andrey 2011-02-01 17:35:34