ios - 类保留计数

标签 ios objective-c singleton retaincount retain-cycle

这里发布了大量关于避免使用 block 的保留循环的内容,但是当使用类和类方法时呢?假设我有一堂这样的课:

// MyClass.h

+ (void)doSomethingAsynch:(void (^)(void))block;
+ (void)doSomethingElse;

来电者想说的是:

[MyClass doSomethingAsynch:^{
    [MyClass doSomethingElse];
}

调用者必须声明 MyClass 的 unsafe_unretained 副本吗?或者像单例这样的类不会增加它的保留计数?如果我们将类的保留计数发送到月球,因为我们希望它始终存在,这有什么关系吗?

最佳答案

[[NSObject class] keepCount] 返回 NSUIntegerMax,因此,是的,类被实现为单例,并且可能会覆盖 release 作为 no -操作。

附录:

objc runtime implementation NSObject 在第 1659 行你发现...

+ (id)retain {
    return (id)self;
}

...它验证 [NSObject keep] 不执行任何操作。

关于ios - 类保留计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14267887/

相关文章:

php - 通过 PHP 脚本发送推送通知

iphone - 如何获得 UITableView 的可见矩形?

ios - 通过 AVPlayer 播放实时 URL 流

ios - 与 init 一起使用的 Swift 单例(编码器 :)

java - 单例用于多种用途?

ios - 使用 NSFetchRequest 返回 Core Data 属性的子字符串

ios - 使用从弹出框选择器 View 中选择的字符串数组自动刷新表格 View

java - 在多线程应用程序中使用带有继承的单例设计

ios - 如何在 iOS 中为 Web View 设置特定大小的自定义字体?

ios - Swift + iOS : How to set notification. 对象为零?