xcode

Quản lý bộ nhớ trong iOS ban đầu không phải là ARC (Đếm tham chiếu tự động), nơi chúng tôi phải giữ lại và giải phóng các đối tượng. Bây giờ, nó hỗ trợ ARC và chúng tôi không phải giữ lại và giải phóng các đối tượng. Xcode tự động xử lý công việc trong thời gian biên dịch.

Các vấn đề về quản lý bộ nhớ

Theo tài liệu của Apple, hai vấn đề chính trong quản lý bộ nhớ là:

  • Giải phóng hoặc ghi đè dữ liệu vẫn đang được sử dụng. Nó gây ra hỏng bộ nhớ và thường dẫn đến ứng dụng của bạn bị treo, hoặc tệ hơn, dữ liệu người dùng bị hỏng.
  • Không giải phóng dữ liệu không còn sử dụng gây rò rỉ bộ nhớ. Khi bộ nhớ được cấp phát không được giải phóng mặc dù nó sẽ không bao giờ được sử dụng lại, nó được gọi là rò rỉ bộ nhớ. Rò rỉ khiến ứng dụng của bạn sử dụng lượng bộ nhớ ngày càng tăng, do đó có thể dẫn đến hiệu suất hệ thống kém hoặc (trong iOS) ứng dụng của bạn bị chấm dứt.

Quy tắc quản lý bộ nhớ

  • Chúng tôi sở hữu các đối tượng mà chúng tôi tạo ra và sau đó chúng tôi phải giải phóng chúng khi chúng không còn cần thiết nữa.
  • Sử dụng Giữ lại để giành quyền sở hữu đối tượng mà bạn không tạo. Bạn cũng phải giải phóng những đối tượng này khi chúng không cần thiết.
  • Đừng phát hành các đối tượng mà bạn không sở hữu.

Xử lý bộ nhớ trong ARC

Bạn không cần phải sử dụng bản phát hành và giữ lại trong ARC. Vì vậy, tất cả các đối tượng của bộ điều khiển chế độ xem sẽ được giải phóng khi bộ điều khiển chế độ xem được gỡ bỏ. Tương tự, các đối tượng con của bất kỳ đối tượng nào sẽ được giải phóng khi chúng được giải phóng. Lưu ý rằng nếu các lớp khác có một tham chiếu mạnh đến một đối tượng của một lớp, thì toàn bộ lớp đó sẽ không được giải phóng. Vì vậy, nên sử dụng các thuộc tính yếu kém cho các đại biểu.

Công cụ quản lý bộ nhớ

Chúng tôi có thể phân tích việc sử dụng bộ nhớ với sự trợ giúp của các công cụ công cụ Xcode. Nó bao gồm các công cụ như Activity Monitor, Allocations, Leaks, Zombies, v.v.

Các bước để phân tích phân bổ bộ nhớ

Bước 1 – Mở một ứng dụng hiện có.

Bước 2 – Chọn Sản phẩm rồi đến Hồ sơ như hình bên dưới.

iOS - Quản lý bộ nhớ

Bước 3 – Chọn Phân bổ trong màn hình tiếp theo được hiển thị bên dưới và chọn Hồ sơ.

iOS - Quản lý bộ nhớ

Bước 4 – Chúng ta sẽ thấy việc phân bổ bộ nhớ cho các đối tượng khác nhau như hình bên dưới.

Bước 5 – Bạn có thể chuyển đổi giữa các bộ điều khiển chế độ xem và kiểm tra xem bộ nhớ có được giải phóng đúng cách hay không.

iOS - Quản lý bộ nhớ

Bước 6 – Tương tự, thay vì Allocations, chúng ta có thể sử dụng Activity Monitor để xem tổng thể bộ nhớ được phân bổ cho ứng dụng.

iOS - Quản lý bộ nhớ

Bước 7 – Các công cụ này giúp chúng tôi truy cập mức tiêu thụ bộ nhớ của mình và xác định vị trí có thể xảy ra rò rỉ.

iOS – Gỡ lỗi ứng dụng

Chúng tôi có thể mắc lỗi trong khi phát triển ứng dụng, điều này có thể dẫn đến các loại lỗi khác nhau. Để khắc phục những lỗi hoặc lỗi này, chúng ta cần gỡ lỗi ứng dụng.

Chọn một trình gỡ lỗi

Xcode có hai trình gỡ lỗi cụ thể là, trình gỡ lỗi GDB và LLDB. GDB được chọn theo mặc định. LLDB là một trình gỡ lỗi là một phần của dự án trình biên dịch mã nguồn mở LLVM. Bạn có thể thay đổi trình gỡ lỗi bằng tùy chọn “chỉnh sửa lược đồ đang hoạt động”.

Làm thế nào để tìm lỗi mã hóa?

Để xác định các lỗi liên quan đến mã hóa, bạn cần xây dựng ứng dụng của mình để biên dịch mã. Trong trường hợp mã có lỗi, trình biên dịch sẽ hiển thị tất cả các thông báo, lỗi và cảnh báo với các lý do có thể xảy ra.

Bạn có thể nhấp vào Sản phẩm và sau đó nhấp vào Phân tích để xác định các vấn đề có thể xảy ra trong một ứng dụng.

Đặt các điểm ngắt

Điểm ngắt giúp chúng ta biết các trạng thái khác nhau của các đối tượng ứng dụng của chúng ta, giúp chúng ta xác định nhiều sai sót bao gồm các vấn đề logic. Chúng ta chỉ cần nhấp vào số dòng để tạo điểm ngắt. Để loại bỏ một điểm ngắt, chỉ cần nhấp và kéo nó ra. Ảnh chụp màn hình sau đây cho thấy cách đặt điểm ngắt:

iOS - Gỡ lỗi ứng dụng

Khi chúng tôi chạy ứng dụng và chọn nút playVideo, ứng dụng sẽ tạm dừng ở số dòng mà chúng tôi đã đặt điểm ngắt. Nó cho phép chúng tôi có thời gian để phân tích trạng thái của ứng dụng. Khi điểm ngắt được kích hoạt, chúng ta sẽ nhận được kết quả như hình bên dưới.

iOS - Gỡ lỗi ứng dụng

Bạn có thể dễ dàng xác định luồng nào đã kích hoạt điểm ngắt. Ở phía dưới, bạn có thể thấy các đối tượng như self, sender, v.v., chứa các giá trị của các đối tượng tương ứng và chúng ta có thể mở rộng một số đối tượng này và xem trạng thái của từng đối tượng này là gì.

Để tiếp tục ứng dụng, chúng ta sẽ chọn nút tiếp tục (nút ngoài cùng bên trái), trong khu vực gỡ lỗi được hiển thị bên dưới. Các tùy chọn khác bao gồm bước vào, bước ra và bước qua.

Điểm ngắt ngoại lệ

Chúng tôi cũng có các điểm ngắt ngoại lệ kích hoạt ứng dụng dừng tại vị trí xảy ra ngoại lệ. Chúng tôi có thể chèn các điểm ngắt ngoại lệ bằng cách chọn nút + sau khi chọn trình điều hướng gỡ lỗi. Bạn sẽ nhận được cửa sổ sau.

iOS - Gỡ lỗi ứng dụng

Sau đó, chúng ta cần chọn Add Exception Breakpoint, cửa sổ này sẽ hiển thị như sau

iOS - Gỡ lỗi ứng dụng

Bạn có thể thu thập thêm thông tin về gỡ lỗi và các tính năng Xcode khác từ hướng dẫn sử dụng Xcode 4 

Trả lời