2009-08-12 25 views
6

Ứng dụng của tôi sử dụng nhiều bộ nhớ. Thông thường nó chạy tốt, nhưng trên một thiết bị được nạp mà không được khởi động lại trong một thời gian, nó sẽ bị vứt bỏ với lỗi Low Memory khét tiếng.Cách trả lời didReceiveMemoryCảnh báo trong ứng dụng OpenGL

Tôi muốn trả lời didReceiveMemoryWarning và giải phóng một số bộ nhớ cache của tôi.

Nhưng tôi gặp sự cố là ứng dụng của tôi dựa trên mẫu OpenGL ES và không có bộ điều khiển chế độ xem. Nó chỉ có App Delegate chứa tham chiếu đến glView.

Tôi có thể làm gì để bẫy thông báo didReceiveMemoryWarning để tôi có thể trả lời?

Trả lời

9

Điều này cũng có sẵn trong số Application Delegate của bạn.

-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{ 
    NSLog(@"Received memory warning!"); 
} 
10

Bạn cũng có thể thêm phương thức làm người quan sát, trong bất kỳ lớp nào bạn muốn, vào thông báo UIApplicationDidReceiveMemoryWarningNotification. Mã có thể như sau:

- (void) cleanMemory: (NSNotification*) notification { 
    // Save memory! 
} 

- (id) init { // Or any other function called early on. 
    // other init code 
    [[NSNotificationCenter defaultCenter] 
    addObserver:self selector:@selector(cleanMemory:) 
      name:UIApplicationDidReceiveMemoryWarningNotification 
     object:nil]; 
    return self; 
} 
Các vấn đề liên quan