mrd*_*enz 2 oop iphone release reference-counting objective-c
我正在查看其他人的代码,但它似乎是RELEASE对象视频,但随后继续使用它.
现在从我对面向对象编程语言的理解,一旦它被发布,它应该从内存中释放出来......
我看不出它有什么参考......但我认为这是没关系的原因.看起来像是一件奇怪的事情,(当你没有完成它时释放它,为什么不使用autorelease例如).
self.video = [[VideoFrameExtractor alloc] initWithVideo:[Utilities bundlePath:@"sophie.mov"]];
[video release];
// set output image size
video.outputWidth = 426;
video.outputHeight = 320;
Run Code Online (Sandbox Code Playgroud)
它相当于:
self.video = [[[VideoFrameExtractor alloc] initWithVideo:[Utilities bundlePath:@"sophie.mov"]] autorelease];
(假设视频由自己保留)
通过尽可能避免使用自动释放池,可以提高性能,并且有助于本地化代码中有关引用计数的错误.soo ...假设属性是保留或复制,那么self应该只保留一个引用 - 这是完美的.
希望有所帮助.