Làm cách nào để thiết lập NSZombieEnabled
và CFZombieLevel
thực thi trong Xcode 4?
Làm cách nào để thiết lập NSZombieEnabled
và CFZombieLevel
thực thi trong Xcode 4?
Câu trả lời:
Trong Xcode 4.x nhấn
(hoặc nhấp chuột Menubar
> Product
> Scheme
> Edit Scheme
)
chọn tab "Chẩn đoán" và nhấp vào "Bật đối tượng Zombie":
Điều này biến các đối tượng được phát hành thành các phiên bản NSZombie in cảnh báo giao diện điều khiển khi được sử dụng lại. Đây là một trợ giúp gỡ lỗi làm tăng sử dụng bộ nhớ (không có đối tượng nào thực sự được phát hành) nhưng cải thiện báo cáo lỗi.
Một trường hợp điển hình là khi bạn giải phóng quá mức một đối tượng và bạn không biết đối tượng nào:
-[UITableView release]: message sent to deallocated instance
Cài đặt Xcode này bị bỏ qua khi bạn lưu trữ ứng dụng để gửi App Store. Bạn không cần phải chạm vào bất cứ điều gì trước khi phát hành ứng dụng của bạn.
Nhấn ⌥⌘Rcũng giống như chọn Sản phẩm> Chạy trong khi vẫn giữ Altphím.
Nhấp vào hộp kiểm "Kích hoạt đối tượng Zombie" giống như thêm thủ công "NSZombieEnables = YES" trong phần "Biến môi trường" của tab Đối số.
CMD-<
( CMD-SHIFT-comma
) hoặcProduct -> Scheme -> Edit SCheme...
Câu trả lời của Jano là cách dễ nhất để tìm thấy nó .. một cách khác sẽ là nếu bạn nhấp vào thanh thả xuống lược đồ -> chỉnh sửa lược đồ -> tab đối số và sau đó thêm NSZombieEnables trong cột Biến môi trường và CÓ trong cột giá trị ...
Tôi thấy sự thay thế này thuận tiện hơn:
Profile
Zombies
Ngay khi phát hiện ra zombie, bạn sẽ nhận được một "Ngăn xếp Zombie" gọn gàng cho bạn biết khi nào đối tượng trong câu hỏi được phân bổ và nơi nó được giữ lại hoặc phát hành:
Event Type RefCt Responsible Caller
Malloc 1 -[MyViewController loadData:]
Retain 2 -[MyDataManager initWithBaseURL:]
Release 1 -[MyDataManager initWithBaseURL:]
Release 0 -[MyViewController loadData:]
Zombie -1 -[MyService prepareURLReuqest]
Ưu điểm so với việc sử dụng tab chẩn đoán của Lược đồ Xcode :
Nếu bạn quên bỏ chọn tùy chọn trong tab chẩn đoán, sẽ không có đối tượng nào được giải phóng khỏi bộ nhớ.
Bạn nhận được một ngăn xếp chi tiết hơn cho bạn thấy những phương thức mà đối tượng bị hỏng của bạn được phân bổ / giải phóng hoặc giữ lại.
iOS Simulator > All
từ danh sách mẫu chính (Bạn chỉ có thể thực hiện việc này trong trình giả lập)
Trong Xcode 4.2
hoặc chọn Edit Scheme
từ Product
> Scheme
Menu
chọn Enable Zombie Objects
mẫu Diagnostics
tab
Thay vào đó, nếu bạn thích .xcconfig
các tệp, bạn có thể đọc bài viết này https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-en môi-biến-from-a-script /
Ca cao cung cấp một tính năng thú vị giúp tăng cường đáng kể khả năng của bạn để gỡ lỗi các tình huống như vậy. Đây là một biến môi trường được gọi là NSZombieEnables, hãy xem video này giải thích việc thiết lập NSZombieEnables trong object-C
Trong Xcode> 4.3:
Bạn bấm vào thanh thả xuống lược đồ -> chỉnh sửa lược đồ -> tab đối số và sau đó thêm NSZombieEnables trong cột Biến môi trường và CÓ trong cột giá trị.
Chúc may mắn !!!