目标C [对象发布]

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)

jus*_*tin 5

它相当于: self.video = [[[VideoFrameExtractor alloc] initWithVideo:[Utilities bundlePath:@"sophie.mov"]] autorelease];

(假设视频由自己保留)

通过尽可能避免使用自动释放池,可以提高性能,并且有助于本地化代码中有关引用计数的错误.soo ...假设属性是保留或复制,那么self应该只保留一个引用 - 这是完美的.

希望有所帮助.