Tôi đang sử dụng Xcode 4.2 để viết và Clang 3.0 để tạo chương trình thể hiện một sự cố cụ thể.Quá phát hành khiến cửa sổ bị tê liệt
Chương trình có cửa sổ có nghĩa là giữ xung quanh được đặt trong nib thành “Thả khi đóng”, vì vậy nó được phát hành quá mức trong các lần sử dụng tiếp theo. Nó có nghĩa là một tấm, vì vậy nó được hiển thị bằng cách sử dụng beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:
. Cố gắng hiển thị cửa sổ lần thứ hai hoặc thứ ba sẽ làm hỏng ứng dụng.
Tôi nhớ rằng đã xảy ra một năm trước, với chương trình nhận được EXC_BAD_ACCESS
và điều đó kích hoạt trình gỡ lỗi dừng tại điểm đó. Tôi cũng nhớ có thể tìm kiếm vấn đề trong các dụng cụ bằng cách sử dụng mẫu Zombies.
Đó là những gì tôi muốn (chương trình này là một phần của bản trình bày để hiển thị các kỹ thuật gỡ lỗi), nhưng đó không phải là những gì đang diễn ra. Bây giờ, chương trình không sụp đổ; Các công cụ cho thấy số lượng lưu giữ trên cửa sổ giảm xuống 1 lần, nhưng không thấp hơn, vì vậy nó không được giải phóng.
Điều đó sẽ ổn nếu sự cố dừng lại ở đó; Tôi có thể chỉ đơn giản là ẩn và hiển thị tờ một hoặc hai lần nữa. Vấn đề là, lần thứ hai tôi mang tờ (nên-chết-nhưng-vẫn-có-ít-một-giữ-giữ-nó-sống), nó tê liệt.
Do đó tôi có nghĩa là không có trang tính hay bất kỳ điều khiển nào trong đó (nó chứa trường, dạng xem văn bản và hai nút) phản hồi sự kiện. Nhịp tim không làm gì trong đó; cửa sổ có nút OK, nhưng khi cửa sổ bị tê, nút OK không bị rung. Không có gì hoạt động để loại bỏ trang tính.
Nhưng chương trình không bị lỗi. Tôi vẫn có thể tương tác với các menu và Dock cho thấy chương trình đang phản hồi. Nếu tôi cố gắng bỏ nó, nó sẽ phát ra tiếng bíp, vì nó có một tờ giấy.
Điều gì khiến cửa sổ bị tê liệt và tôi có thể làm gì với nó?
Dưới đây là một phiên bản thu gọn của chương trình cũng bộc lộ vấn đề: https://github.com/boredzo/NumbWindow
Phụ lục: Chơi với ứng dụng thử nghiệm hơn nữa, có vẻ như tờ đã xuất hiện ở bất kỳ trạng thái nào. Nếu tôi đóng nó bằng cách nhấp vào nút Hủy, thì nút Hủy vẫn được tô sáng khi quay lại. –
ARC có được bật không? – NJones
@NJones: Không. Tôi có thể sẽ gắn bó với MRC trong chương trình này và trình bày miễn là có một cơ hội tốt Cocoa lập trình mới sẽ cần phải sử dụng mã MRC, ngay cả khi họ không viết nó được nêu ra. –