如何测试一个对象在拆卸后将被释放

时间:2014-12-23 03:04:20

标签: ios objective-c xctest nsautoreleasepool

有没有办法测试在XCTest中调用对象后拆除我的对象将被解除分配。我想做这样的事情:

[self.client teardown];
__weak typeof(self.client) weakClient = self.client;
XCTestExpectation *teardownExpectation = ...;
dipatch_time_t delay = ...
dispatch_after(delay, dispatch_get_main_queue(), ^{
    XCTAssertNil(weakClient);
    [teardownExpectation fulfill];
}
self.client = nil;
[self waitForExpectationsWithTimeout:5.0 ...];

但问题是自动释放池不会耗尽,所以我的对象永远不会被释放。

还有其他方法可以测试吗?

1 个答案:

答案 0 :(得分:1)

您可以将它放在您自己的自动释放池中,然后将其排空,以模拟运行循环结束时发生的情况。显然,在这里你通过等待测试的期望来保持运行循环。但是,测试分配的更好方法是使用Instruments和泄漏/分配工具。