キウイテスト ケースを使用して、メモリ警告機能を受信したことを確認する問題に直面しています。機能を確認するには?
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
キウイのテストケースについて知っている人はいますか?
キウイテスト ケースを使用して、メモリ警告機能を受信したことを確認する問題に直面しています。機能を確認するには?
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
キウイのテストケースについて知っている人はいますか?
メソッドを直接呼び出すだけです。
it(@"Should cleanup when receiving a memory warning", ^{
[controller didReceiveMemoryWarning];
// assert here that the data that you expected was released
});
このアプローチでnil-ed
は、メモリ警告が発生した場合に予想されるコントローラーのプロパティを確認する必要があります。
または、単体テスト アプリのメモリ使用量を確認し、シミュレートされたメモリ警告の後にメモリが減少したかどうかを確認できます。これは最初のアプローチほど正確ではありませんが、いくつかのヒントを得ることができます。また、コントローラーが画面にレンダリングされることを確認するか、少なくともレンダリングされたと認識させて、ビュー/テーブルビューセルなどの構築を開始する必要があります.
it(@"Should cleanup when receiving a memory warning", ^{
vm_size_t memoryBeforeMemWarning;
vm_size_t memoryAfterMemWarning;
MyController *controller = nil;
@autoreleasepool {
controller = ...;
// call controller.view, or other methods that create the view
// also call any other methods that trigger subview creation
memoryBeforeMemWarning = getMemUsage();
//simulate the memory warning
[controller didReceiveMemoryWarning];
}
memoryAfterMemWarning = getMemUsage();
// reference the variable here to make sure ARC doesn't
// release it when it detects its last reference
controller = nil;
// now assert upon the difference between the two reported memory usages
});
autorelease pool
で作成されたオブジェクトを制御するには、 を使用する必要があります。これらのオブジェクトは、メインがドレインされたときではなく、スコープが終了しautorelease
たときに解放されるためです。ノート。の実装は追加しませんでした。実装方法については、こちらを参照してください。autorelease pool
autorelease pool
getMemUsage()