gpt4 book ai didi

objective-c - 覆盖 `release` 进行调试是否安全?

转载 作者:太空狗 更新时间:2023-10-30 03:34:38 26 4
gpt4 key购买 nike

有时我需要查明一个对象是否真的会被释放。我当然可以使用 Instruments,但这需要很多时间,而且我必须搜索数百万个对象,所以我曾经这样做:

-(void)release {
NSLog(@"I'm released");
[super release];
}

但问题是:这样做安全吗?当我覆盖 -(void)release 时,我会遇到任何问题吗?另外,它真的是 void 吗?如果我构建了用于分发的应用程序,但由于意外而将其留在那里怎么办?还是只是安全?谢谢

最佳答案

没问题,但请限制它仅用于调试。


不是void,而是oneway void

-(oneway void)release {
NSLog(@"I'm released"); // <-- remeber the @.
[super release];
}

请注意,如果您只为 NSObject 覆盖它,那么发送到“免费桥接容器”(例如 NSCFArray 等)的 -release 消息将被错过,因为它们也被覆盖了-release 转发到 CFRelease

关于objective-c - 覆盖 `release` 进行调试是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2662205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com