0

我必须将以下对象传递给一个方法,让该方法对其进行修改,以便在方法调用之后我可以继续使用修改后的对象。

AVMutableCompositionTrack *compositionVideoTrack[2];

目前像这样传递它:

[self buildShow:&compositionVideoTrack];

buildshow 方法如下所示:

-(void)buildShow:(AVMutableCompositionTrack**)videoTracks{
}

我收到此编译器警告,但目前无法正常工作:

不兼容的指针类型将“AVMutableCompositionTrack *__strong (*)[2]”发送到“AVMutableCompositionTrack *__autoreleasing *”类型的参数

我怎样才能改变它以使其工作?

4

2 回答 2

2

像这样传递它:

[self buildShow:compositionVideoTrack];

当你像这样声明它时:

AVMutableCompositionTrack * __autoreleasing compositionVideoTrack[2];

AVMutableCompositionTrack**它已经是一个指针数组,因此它与参数 ( )的类型兼容。

于 2012-10-25T22:32:42.870 回答
0

除非您正在使用属性,否则您应该这样做(注意该方法现在返回相同类型的对象):

方法构造函数:

-(AVMutableCompositionTrack *)buildShow:(AVMutableCompositionTrack *)videoTracks {
    // do something
    return newVideoTracks;
}

并且,方法调用:

newVideoTracks = [self buildShow:compositionVideoTrack];

如果使用属性,则可以使用不带参数的 void 方法。

于 2012-10-25T22:36:20.437 回答