Tôi có phương thức trả về số CGPath
và đang tạo cảnh báo phân tích. Phương thức được khai báo trong một giao thức. Đây là một thực hiện ví dụ mà được tạo ra cảnh báo:Tôi nên tránh cảnh báo bộ nhớ này như thế nào?
"rò rỉ tiềm năng của một đối tượng được phân bổ trên dòng 47 và lưu trữ vào 'con đường'":
- (CGPathRef)createPathForBounds:(CGRect)bounds key:(NSString *)key;
{
if ([key isEqualToString:OvalColumn])
{
CGPathRef path = CGPathCreateWithEllipseInRect(bounds, NULL);
return path;
}
return NULL;
}
Dưới đây là ví dụ sử dụng đó là tạo cảnh báo, "Giảm không chính xác số lượng tham chiếu của đối tượng không được sở hữu tại thời điểm này bởi người gọi"
CGPathRef path = [self.delegate createPathForBounds:bounds key:someKey];
// Use the path to do some drawing
CGRelease(path);
Quản lý bộ nhớ của tôi là correc t; Tôi đang quay trở lại một giữ lại CGPath
từ phương pháp giao thức của tôi và tôi phát hành nó trong khối gọi, vì vậy tôi biết các cảnh báo có thể được bỏ qua, nhưng tôi muốn loại bỏ chúng hoàn toàn.
Tôi có thiếu quy ước đặt tên để làm cho máy phân tích hài lòng không? Các hàm có thể được định nghĩa trong các giao thức không? Phân lớp sẽ hoạt động như thế nào?
Bạn có thể tiết lộ từ ngữ của cảnh báo bạn đang nhận được hay chúng tôi phải đoán? –
Lời xin lỗi của tôi. Đã cập nhật. – kubi
Điều gì sẽ xảy ra nếu bạn đổi tên phương thức thành pathForBounds: key: ?? –