【发布时间】:2012-10-25 22:28:47
【问题描述】:
我必须将以下对象传递给一个方法,让该方法修改它,以便在方法调用之后我可以继续使用我修改的对象。
AVMutableCompositionTrack *compositionVideoTrack[2];
目前这样传递:
[self buildShow:&compositionVideoTrack];
buildshow 方法如下所示:
-(void)buildShow:(AVMutableCompositionTrack**)videoTracks{
}
我收到此编译器警告,但目前无法正常工作:
不兼容的指针类型将“AVMutableCompositionTrack *__strong (*)[2]”发送到“AVMutableCompositionTrack *__autoreleasing *”类型的参数
如何更改它以使其正常工作?
【问题讨论】:
-
除非绝对必要,否则不要使用传递引用。 Locke 在下面的回答更符合其他框架的设计理念。
-
我的计划是让一些不同的对象被该方法修改,并且我需要运行该方法几次,因此通过 ref 传递非常适合我的需要,感谢评论!
-
如果您有几个不同的对象被该方法修改,更好的设计是创建一个类,其中包含各种对象并提供关联它们的逻辑。将来这也可能更容易重构(因为您更改了类,而不是每个调用站点都更改为 multi-arg-pass-by-reference-method)。 (如果您查看 iOS/Cocoa API,会以非常有限的方式使用传递引用)。
标签: iphone objective-c ios ipad