gpt4 book ai didi

ios - 获取 Objective-C/IOS 中特定类的实例计数

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:26:04 25 4
gpt4 key购买 nike

出于 QA 目的,我想确保特定类的实例已正确释放(因此实例的实际数量就足够了)。我查看了 Objective-C 运行时引用,但找不到合适的函数。我检查过类似的问题,但没有找到令人满意的答案。

编辑我拿了TheCodingArt的模型完成了,结果可以在 https://www.generomobile.de/gmi/allocchecker.m困难在于调配 dealloc,因为 ARC 禁止传递 dealloc 的选择器进行调配。我在 http://defagos.github.io/yet_another_article_about_method_swizzling/ 偶然发现了这个有趣的 swizzling 教程。NSString 和其他类集群显然没有被 dealloc 释放,如示例中所示。但对于我自己的类(class),它适用于我们当前的 IOS 项目,并提供了一些有趣的见解。

最佳答案

一种解决方案是在您的 .m 文件中设置一个静态计数器。在指定的 init 方法中增加计数器,在 dealloc 方法中减少计数器。提供一个类方法来读取计数值。

通常不要这样做。这应该只用于测试。

假设您要跟踪 SomeClass 的实例计数。你可以这样做:

SomeClass.h

@interface SomeClass : NSObject

+ (NSInteger)instanceCount;

// everything else you need

@end

SomeClass.m

@import "SomeClass.h"

static NSInteger instanceCount = 0;

@implementation SomeClass

- (instancetype)init {
self = [super init];
if (self) {
instanceCount++;
// everything else you need
}

return self;
}

// all your other code

+ (NSInteger)instanceCount {
return instanceCount;
}

- (void)dealloc {
instanceCount--;
}

@end

关于ios - 获取 Objective-C/IOS 中特定类的实例计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30509312/

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