Tôi có một ứng dụng iPhone đang nhận được cảnh báo bộ nhớ và vì vậy tôi đang cố gắng tìm rò rỉ, sử dụng bộ nhớ hiệu quả hơn, v.v., với sự trợ giúp của Thiết bị. Trong số những thứ khác, tôi đang cố gắng đưa ra bất kỳ đối tượng autoreleased và thay thế bằng các đối tượng alloc/init/release manual. Tuy nhiên, một số cuộc gọi API dường như không có phiên bản 'init' (xem mã bên dưới). Tôi phải thừa nhận là có một số hiểu lầm cơ bản:Sử dụng các dụng cụ Rò rỉ & Đối tượng Alloc: Các đối tượng tự động được tính là rò rỉ?
Nếu tôi gọi vào 'API và trở lại đối tượng chủ yếu autoreleased, có thể các đối tượng hiển thị như rò rỉ trong Instruments? Dường như tôi thấy hành vi này trong Dụng cụ.
Nếu có đến 2, tôi có nên bỏ qua nếu không có thay thế 'không tự động' và tôi đang sử dụng API mà tôi cần không? Ngoài ra, nếu mã này được gọi là rất nhiều, tôi nên hoàn toàn suy nghĩ lại algor?
Đây là một số mã tiện ích từ ứng dụng của tôi được gọi rất nhiều. Về cơ bản xác định xem hai ngày có ý nghĩa 'bình đẳng' hay không. Tôi đã để lại trong mã nhận xét để bạn có thể thấy các loại cải tiến mà tôi sẽ theo sau trong codebase của mình - DID này giảm rò rỉ bộ nhớ khi chạy trong Instruments khi tôi bắt đầu tạo thủ công NSDate (và phát hành) đã giúp. Tuy nhiên, tôi vẫn có các đối tượng thành phần ngày mà tôi tin là bị rò rỉ ... nhưng đó là cuộc gọi API (xin lỗi vì định dạng mã nhưng tôi dường như không thể cải thiện nó trên SO):
+ (BOOL)isDayEqualToDay:(NSDate*)date anotherDate:(NSDate*)anotherDate
{
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
//NSCalendar *cal;
NSDateComponents *componentsFromDate, *componentsFromAnotherDate;
NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
//cal = [NSCalendar currentCalendar];
componentsFromDate = [cal components:unitFlags fromDate:date];
componentsFromAnotherDate = [cal components:unitFlags fromDate:anotherDate];
BOOL bDatesEqual = ([componentsFromDate year] == [componentsFromAnotherDate year] &&
[componentsFromDate month] == [componentsFromAnotherDate month] &&
[componentsFromDate day] == [componentsFromAnotherDate day]);
[cal release];
return bDatesEqual;
/*
return (
[componentsFromDate year] == [componentsFromAnotherDate year] &&
[componentsFromDate month] == [componentsFromAnotherDate month] &&
[componentsFromDate day] == [componentsFromAnotherDate day]
);*/
}
Tôi nghĩ componentsFromDate và componentsFromAnotherDate được hiển thị dưới dạng rò rỉ nhưng chỉ có các đối tượng về cơ bản được trả về từ một cuộc gọi API NSData (autoreleased). Không chắc chắn những gì khác tôi thực sự có thể làm để làm cho điều này hiệu quả hơn và tôi đang đặt câu hỏi về sự hiểu biết của tôi về cách sử dụng tốt nhất Dụng cụ. Gợi ý?
Dường như không có cách nào để sử dụng intstruments để gỡ lỗi GDC. Có cách nào khác không? –