Với hai trường hợp, mã nào là phương pháp hay nhất và tại sao?Tự động phát hành và phát hành
autorelease
loginButton = [[[UIBarButtonItem alloc] initWithTitle:@"Login"
style:UIBarButtonItemStylePlain
target:self
action:@selector(loginButtonClicked:)]
autorelease];
self.navigationItem.rightBarButtonItem = loginButton;
hoặc
phát hành
loginButton = [[UIBarButtonItem alloc] initWithTitle:@"Login"
style:UIBarButtonItemStylePlain
target:self
action:@selector(loginButtonClicked:)];
self.navigationItem.rightBarButtonItem = loginButton;
[loginButton release];
Trên thiết bị bộ nhớ thấp như iPhone, tốt hơn là nên phát hành rõ ràng, khi có thể. Nó cũng làm cho việc gỡ rối các lỗi EXC_BAD_ACCESS lạ dễ dàng hơn, bởi vì một bản phát hành rõ ràng có nghĩa là bạn đang kiểm soát tuổi thọ của đối tượng. –
@ Alex, trong trường hợp này, nó thực sự không tạo ra sự khác biệt - đối tượng đang được giữ lại ngay lập tức sau khi tạo. Tất cả những gì sẽ xảy ra là số lượng tham chiếu sẽ bị giảm đi bởi một ... ai quan tâm nếu điều đó xảy ra ngay lập tức hoặc đôi khi sau này? –
Nó không có sự khác biệt chỉ khi bạn không bao giờ gán lại self.navigationItem.rightBarButtonItem trước khi nhóm tự động phát hành được phát hành. – JeremyP