Objective c 释放和调用-stopMocking后,使用objc_getClassList可以发现ocmock类对象

Objective c 释放和调用-stopMocking后,使用objc_getClassList可以发现ocmock类对象,objective-c,objective-c-runtime,ocmock,Objective C,Objective C Runtime,Ocmock,我正在使用OCMock在XCTest测试套件中创建一些类模拟。我还有一个特定的单元测试,在一个单独的测试类/模块中,我不模拟任何东西。此测试查询运行时以查找一组具有符合NSSecureCodeding的特定前缀的my类,并对它们执行多个测试 在测试中,我使用objc_getClassList获取类列表。我看到一些看起来像是被嘲笑的课程仍然存在,例如: FooType-0x004fba20-3301757833 我似乎不明白他们为什么还在闲逛,因为: 我在测试中调用了-stopMocking-te

我正在使用OCMock在XCTest测试套件中创建一些类模拟。我还有一个特定的单元测试,在一个单独的测试类/模块中,我不模拟任何东西。此测试查询运行时以查找一组具有符合NSSecureCodeding的特定前缀的my类,并对它们执行多个测试

在测试中,我使用objc_getClassList获取类列表。我看到一些看起来像是被嘲笑的课程仍然存在,例如:

FooType-0x004fba20-3301757833

我似乎不明白他们为什么还在闲逛,因为:

  • 我在测试中调用了-stopMocking-tearDown
  • 我没有存根任何类方法,只有实例方法
  • 我已经将范围缩小到这样一个事实:模拟对象是在一个单独的测试和测试类/模块中的另一个非模拟对象的初始值设定项中复制的

    显然,如果您试图向这些类发送消息或对它们进行操作,您会遇到类似于“nsInternalInconsistencException”、“类FooType无模拟-(地址屏蔽)-3301757833”的问题


    我的印象是,当元类和mock被取消分配或对它们调用-stopMocking时,它们将恢复正常。

    这是使用ocmock 3.0.Simple:ocmock。就我个人而言,我会发一份公关来解决这个问题。好主意。我创造了一个