Quản lý bộ nhớ trong Objective C – Khối lệnh và Giá trị

377
0
Share:

Khối lệnh autorelease

Khi bạn đã tạo ra 1 project mới với Xcode, bạn đã nhận thấy rằng 1 số đoạn code xuất hiện theo như mặc định, chẳng hạn khối autorelease. Từ các bài trước ta đã gặp tuy nhiên sẽ tạm thời bỏ qua, giờ chính là thời điểm ta cần tìm hiểm xem khối lệnh đó làm gì 1 cách cụ thể. Dưới đây là 1 khối lệnh mặc định được add vào file main.m:

autorelease

 

 

 

Hay bạn cũng có thể chủ động tạo kịch bản cho autorealease như thế này:

Ở đoạn code phía trên, bạn sẽ thấy khi chúng ta cần tạo ra khối lệnh để xử lý autorelease thì trong câu lệnh đầu tiên chúng ta sẽ tạo ra 1 đối tượng từ lớp NSAutoReleasePool gọi là pool và câu lệnh thứ hai sẽ kết thúc khối lệnh xử lý autorealse với lời gọi phương thức drain của đối tượng pool. Những câu lệnh mà ta đã khai báo trong phạm vi hai câu lệnh phía trên sẽ chịu những ảnh hưởng của quá trình  autorelease và cụ thể, chúng ta sẽ thấy nếu như những đối tượng được khởi tạo trong phạm vị này nếu như mà không còn có tham chiếu tới nó nữa thì nó sẽ được release một cách tự động ra khởi bộ nhớ chúng ta không cần phải tự viết thao tác release cho mỗi đối tượng nữa.

Giá trị retainCount

Trước khi kết thúc, chúng ta cần nhìn vào 1 ací gì đó có thể giúp cho bộ nhớ của một chương quản lý đơn giản hơn. Cho tới bài hôm nay mình đã tạo ra đối tượng và bản thân mình cũng biết có bao nhiêu bản thể hiện của 1 đối tượng. Tuy nhiên phải làm thế nào để đưa ra 1 con số cụ thể? Rất đơn giản, trên đối tượng thể hiện của chúng ta luôn có 1 thuộc tính là retainCount việc còn lại đó là ta cần in giá trị đó ra.

retainCount trả về 1 số nguyên, do đó chúng ta dùng  %d để có thể hiển thị giá trị ở phần định dạng.

 

Share:

Leave a reply