Tôi đang gặp sự cố lạ khi chụp một thể hiện của lớp @objc
(viết nhanh, nhưng được chú thích với @objc
và lớp con của NSObject
). Nó xảy ra khi đóng cửa đang được gán và không khi được gọi, do đó, vấn đề không phải là giá trị bị bắt sẽ được deallocated và sau đó đóng cửa được gọi là. Nó xảy ra ngẫu nhiên, đôi khi nó bị treo sớm hơn, đôi khi sau đó. Tôi đã gặp lỗi này trong các phiên bản trước của Swift (tôi nghĩ nó là Swift 1.2), nhưng bây giờ tôi đang sử dụng 2.1 và nhận được sự cố này quá._swift_abortRetainUnowned khi chụp @objc class là united
Nó hoạt động tốt khi tôi thay đổi [unowned x]
thành [weak x]
và sau đó truy cập nó bằng vũ lực unwrapping x!.doSomething()
dẫn tôi tin rằng đó là lỗi trong Swift, thay vì trong mã của tôi. Tuy nhiên trước khi mở một vé tại bugs.swift.org, tôi muốn nhận được nhiều hơn về điều này để đảm bảo rằng tôi không bỏ lỡ bất cứ điều gì.
Nó cũng đã được đề cập ở đây:
http://www.codeproject.com/Articles/791304/Resolving-strong-references-between-Swift-and-Obje
đây:
https://www.reddit.com/r/swift/comments/3vhwmj/unowned_bug_in_closure_causes_attempted_to_retain/
và ở đây:
https://forums.developer.apple.com/thread/9873
Nhưng khác hơn là thay đổi lại bản chụp ra weak
và lực lượng unwrapping nó sau này, không có giải pháp .
Các bạn đã từng tìm thấy nguyên nhân là gì và tại sao nó không được làm việc khi sử dụng không có chủ bên trong danh sách chụp? – Whirlwind
Không, tôi đã phải thay đổi tất cả [unowned x] thành [weak x] để loại bỏ những sự cố này. –