#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
Phương thức chính gọi phát hành trên hồ bơi sau khi thoát khỏi ứng dụng, tình cờ gửi bản phát hành tới tất cả các đối tượng trong hồ bơi. Nhưng vì các đối tượng autoreleased được tạo bên trong ứng dụng không dính xung quanh cho đến khi ứng dụng thoát ra, tại một thời điểm nào đó trong runloop, pool được xả hoặc phát hành (trong ngữ cảnh của iPhone, drain == release .. trừ khi tôi cần phải sửa chữa vào thời điểm này!). Nhưng không ai biết chắc chắn khi điều này xảy ra? Nó sẽ có vẻ hợp lý cho các hồ bơi được thoát nước ở phần cuối của một runloop, và một cái mới được phân bổ vào đầu tiếp theo, nhưng tôi không thể tìm thấy bất kỳ thông tin dứt khoát về điều này. Here's a discussion trên diễn đàn táo, nhưng dường như có tính đầu cơ cao (chưa kể đến sự tranh cãi, về phía cuối). Có ai cho tôi câu trả lời hay không, lý tưởng là bằng chứng từ tài liệu hoặc mã nguồn (hoặc thậm chí là một chương trình thử nghiệm)?Khi nào thì Bể bơi tự động chính trong Ca-cao cảm ứng được thoát nước?
hồ bơi cụ thể mà bạn tham chiếu không được thoát cho đến cuối ứng dụng, nhưng mỗi lần gọi vòng lặp chạy sẽ tạo nhóm riêng của nó, được lồng trong vòng chạy của ứng dụng. – cobbal
Điều đó có ý nghĩa. Vì vậy, nếu tôi không bao giờ tạo hồ bơi của riêng tôi, một ứng dụng nhất định sẽ có hai nhóm lồng nhau theo mặc định? – jakev
Yup; hồ bơi ngoài trời và hồ bơi đạp xe trong vòng chạy. UIApplicationMain() có thể tạo/thoát các pool như là một chi tiết thực hiện. – bbum