Thứ Sáu, 18 tháng 3, 2016

Quản Lý Bộ Nhớ Trong Lập Trình IOS

Tuấn Nguyễn     01:17  No comments

Việc quản lý bộ nhớ trong lúc lập trình là việc sở hữu thể nói nhàm chán nhưng đối mang người lập trình iOS thì bắt buộc phải làm cho đúng ngay từ đầu . Như thế cho thấy việc quản lý bộ nhớ trong lập trình iOS cũng quan trọng như việc quản lý những bộ nhớ khác . Sau đây Hoàn Vũ Solutions sẽ giới thiệu cho người mua biết về trình tự việc quản lý bộ nhớ trong lập trình iOS là như thế nào .

Quản Lý Bộ Nhớ Trong Lập Trình IOS
Quản Lý Bộ Nhớ Trong Lập Trình IOS
Pointer-con trỏ :

Pointer trỏ tới đối tượng nó giúp cho đối tượng được giữ lại trong Heap
lúc đối tượng ko còn bất kỳ ai trỏ đến nó nên được dòng bỏ để góp phần làm cho giảm đi bộ nhớ.
Con trỏ mang thể là biến cục bộ trỏ đến đối tượng ở Heap , hoặc nó là thành phần của đối tượng , trỏ đến đối tượng khác .

Object release : 

NSArray *array =[[NSArray alloc ] initWithObjects:
@"HonDa",@"Yamaha",nil];
NSlog(@"Retain count: %d",[array retainCount]);
[array release];
RetainCount=1
ví như ko release dẫn đến vùng nhớ do array trước đây trỏ tới vươn lên là vô chủ . App vẫn chạy nhưng bộ nhớ bị rò rỉ , leaking
Product-Analyze để phân tích kiểm tra
Product -> profile bắt buộc sử dụng thường xuyên có những dự án NonARC
[UIImage imageNamed...] trả về đối tượng autorelease ( tự nhả) . bởi vậy , ko bắt buộc gửi massage release tới đối tượng này nữa .

Object AutoRelease : 
sử dụng lúc tạo ra một object trong hàm rồi trả về qua return .
[object autorelease] : object sẽ được quản lý trong AutoRelease pool

1.Lạm dụng autorelease ko phải chăng tại sao ? 
lúc kết thúc mỗi chu kỳ xử lý sự kiện,CocoaTouch sẽ gửi massage release đến toàn bộ các release object .

2. Object retain được dùng khi nào ? 
Trước lúc chuyển con trỏ tới đối tượng khác bắt buộc release đối tượng cũ

@Property :
Giúp định nghĩa biến thành phần tinh tế hơn bằng cách bổ xung thêm attributes .
Tính năng quản lý bộ nhớ trong IOS SDK:
Trước iOS 5 : Manual Retail / Release ( Giữ nhã thủ công đối tượng ở Heap)
Sau iOS 5 : Automatic Reference Counting ( Tự động đếm con trỏ trỏ đến đối tượng ở Heap)

ARC :

LVT ko sử dụng retain , release , auto release , dealloc thủ công nữa .
Trình biên dịch tự động chèn retain , release ,auto release , dealloc lúc phải .
Thêm một số tính năng mới ; strong , weak
chẳng hề là cơ chế quản lý bộ nhớ hoàn toàn mới .
ko là Garbage Collector như phổ biến người hiểu nhầm .
Bộ nhớ vẫn có thể thất thoát, ứng dụng đỗ vỡ nếu sử dụng sai .
Giải phóng bộ nhớ không tinh tế như JVM hay .Net runtime , nhưng rất thích hợp trang bị smartphone.

Kinh nghiệm :

dùng trong pointer để giữ đối tượng mình tạo ra.
ko dùng strong pointer để giữ đối tượng ko thực sự của mình -> không thể giải phóng bộ nhớ . dùng weak pointer là đủ
Gán strong pointer = nil ở hàm viewDidUnload để ios giải phóng đối tượng ko dùng nữa .
không nhất thiết phải dùng strong để trỏ đến phần từ giao diện trong XIB .

Tuấn Nguyễn


Đam mê thiết kế website , ham học hỏi những điều mới nhất và yêu thích SEO , thích đi du lịch và gặp gở bạn bè
View all posts by Naveed →

0 nhận xét :

Bài Viết Chính

Bài Viết Nổi Bật

Lập Trình IOS

Bạn đang cần những tiện ích - ứng dụng iOS trên thiết bị cầm tay của bạn ?  Bạn băn khoăn không biết nên chọn lập trình iOS của công ty nào...