2009-07-30 23 views
12

Tôi có UITableView làm màn hình đầu tiên với bộ điều khiển UINavigation.Điều gì được giữ lại trong mục tiêu-C?

Trong màn hình đầu tiên của tôi, tôi NSLog(@"Home Screen retain Count=%d",[self retainCount]); và nó ghi nhật ký 6 khi được gọi là viewDidLoad.

Điều này có đúng không?

Trả lời

15

Số tiền lưu giữ là số xác nhận quyền sở hữu có số dư trên đối tượng.

Bạn có quyền sở hữu đối tượng nếu bạn tạo đối tượng bằng cách sử dụng phương thức có tên "phân bổ" hoặc "mới" hoặc chứa "bản sao" (ví dụ: alloc, newObject hoặc mutableCopy) hoặc nếu bạn gửi một thông điệp giữ lại. Tất cả những điều này tăng số tiền giữ lại.

Bạn từ bỏ quyền sở hữu bằng cách sử dụng "phát hành" hoặc "tự động". Những sự giảm giá của retainCount.

Tuy nhiên, bạn không bao giờ nên chú ý đến giá trị của retainCount, nó là lúc khó hiểu nhất, lúc gây hiểu lầm tồi tệ nhất. Chỉ cần thực hiện theo số memory management rules - sở hữu khi bạn cần giữ một tham chiếu đến đối tượng và từ bỏ quyền sở hữu khi bạn hoàn tất và bạn sẽ không gặp sự cố.

Nếu bạn đang nhìn vào retainCount, bạn đang đi về những điều sai đường, và bạn sẽ chỉ đơn giản là gây nhầm lẫn cho mình hơn nữa.

1

Nghe có vẻ ổn. Tại sao nó sai?

Nói chung, cố gắng xác định mọi thứ từ số lượng lưu giữ là một ý tưởng tồi. Không có quy tắc về số lần bạn có thể giữ lại một đối tượng. Quy tắc duy nhất là mỗi quy tắc lưu giữ phải được cân bằng với bản phát hành.

Các vấn đề liên quan