我需要這樣做:alloc對象,直到調用內存警告,然後釋放所有對象。但我有一些問題。我怎樣才能做到這一點?我需要代碼示例,因爲問題在於:代碼。我有一個不使用ARC的類。這個類有一個方法來分配N個保存到數組中的對象。我需要填充內存直到didReceiveMemoryWarning被調用,因爲這是在iOS上「釋放」RAM內存的唯一方法。然後,我會釋放所有。我認爲App Store上的iPhone清潔內存應用程序使用這個技巧來「釋放」內存。 在此先感謝iOS - 直到調用didReceiveMemoryWarning爲止的Alloc對象
0
A
回答
2
你必須填寫缺少的細節,但這是我以前使用過的。信譽歸功於誰/我曾經發現它。這將適用於ARC和非ARC項目。我發現在你完全死亡之前,你通常會得到2-3次警告。祝你好運。晚餐長度是每次分配多少塊。如果你想更細粒度的內存控制改變大小。
-(IBAction)startEatingMemory:(id)sender
{
if(self.belly == nil){
self.belly = [NSMutableArray array];
}
self.paused = false;
[self eatMemory];
}
- (IBAction)pauseEat:(id)sender {
self.paused = true;
[[self class]cancelPreviousPerformRequestsWithTarget:self selector:@selector(eatMemory) object:nil];
}
- (IBAction)stopEatingMemory:(id)sender {
[self pauseEat:self];
[self.belly removeAllObjects];
[[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(eatMemory) object:nil];
}
-(void)eatMemory
{
unsigned long dinnerLength = 1024 * 1024;
char *dinner = malloc(sizeof(char) * dinnerLength);
for (int i=0; i < dinnerLength; i++)
{
//write to each byte ensure that the memory pages are actually allocated
dinner[i] = '0';
}
NSData *plate = [NSData dataWithBytesNoCopy:dinner length:dinnerLength freeWhenDone:YES];
[self.belly addObject:plate];
[self performSelector:@selector(eatMemory) withObject:nil afterDelay:.1];
}
-(void)didReceiveMemoryWarning
{
[self pauseEat:self];
<#Could release all here#>
[super didReceiveMemoryWarning];
}
0
我會編輯/子類不使用ARC要麼使用ARC,要麼添加一個方法,它釋放N個對象。
相關問題
- 1. 只有調用的Alloc的對象
- 2. iOS - 未調用viewDidUnload,但調用了didReceiveMemoryWarning
- 3. didReceiveMemoryWarning(iOS中3.0+)
- 4. Alloc-init UIStoryboard中的對象
- 5. iOS 6棄用viewWillUnload並移動到didReceiveMemoryWarning
- 6. 對象的指針設置爲null後,對象的alloc和init
- 7. C++ alloc對象數組
- 8. 當你需要調用的alloc創建新對象
- 9. iOS:在alloc和init之後返回* nil描述*的對象
- 10. didReceiveMemoryWarning調用但不viewDidUnload?
- 11. 泄漏對象而不調用alloc,new,copy?
- 12. 方法調整爲「alloc」?
- 13. 停止Ajax調用對象
- 14. iOS之後UITableView空白didReceiveMemoryWarning
- 15. 工作原理didReceiveMemoryWarning iOS 6
- 16. ios ARC strong and alloc
- 17. Relaese,Alloc和Nil的一個對象?
- 18. 由alloc創建的訪問對象init
- 19. iOS - 防止對象釋放
- 20. ios在調用didreceivememorywarning時會發生什麼?
- 21. DidReceiveMemoryWarning在iOS中使用Xamarin表格
- 22. 目標C,iOS:不調用子視圖上的alloc或init
- 23. 在循環中調用Get-ADComputer,直到找到對象
- 24. 對象直接調用默認屬性
- 25. 在指針上調用alloc
- 26. 等待,直到收到用戶對象
- 27. iOS通知中的NSNotification&didReceiveMemoryWarning 6
- 28. jQuery的:對,直到從Ajax調用
- 29. 從DOM對象到我的對象/數據的直接引用?
- 30. 阻止執行,直到通過MPI_Comm_spawn調用的孩子完成爲止
這個答案完全解決了我的問題!完善!謝謝! –