2013-11-09 21 views
7

Tôi nhận được cảnh báo khi chạy ứng dụng của mình trong iOS7 "'isa' không còn được dùng nữa", tôi không có bất kỳ ý tưởng nào về cách khắc phục thông báo cảnh báo này. Xin vui lòng bất kỳ ai giúp đỡ về điều này.iOS 7: 'isa' không được chấp nhận

array->isa  = _JKArrayClass; 
+1

Tôi khuyên bạn nên loại bỏ JSONKit khỏi dự án của bạn. Đó là, cho một, không tương thích với kiến ​​trúc 64-bit, bởi vì các hacks ngôn ngữ được sử dụng. – macbirdie

Trả lời

17

Bao gồm <objc/runtime.h>.

Thay thế tất cả mọi thứ như array->isa = _JKArrayClass; với object_setClass(array, _JKArrayClass)

Và tất cả mọi thứ như class = array.isa với class = object_getClass(array)

+0

Và, ngoài ra, hãy chia sẻ ngã ba của bạn trên GitHub? – Ali

+0

Tôi gặp lỗi này hai lần, trong một bản dựng. sửa chữa của bạn hoạt động cho một trong số chúng, nhưng cái khác dường như nằm trong thư viện, tôi không thể chỉnh sửa hoặc lưu nó. Làm thế nào tôi sẽ sửa chữa một trong những xin vui lòng? không chắc chắn nơi mà các lib đến từ. – CthulhuJon

15

tôi figured tôi sẽ chia sẻ giải pháp của tôi cho bạn Cocoapods người dùng ra khỏi đó. (Vui lòng cho tôi biết trong phần nhận xét nếu bạn đã tìm thấy giải pháp tốt hơn)

Tôi đang sử dụng Cocoapod và vì lý do này tôi không muốn sửa đổi mã nguồn của thư viện mà tôi đang gặp phải. Cocoapods đặt giá trị "Trực tiếp sử dụng 'isa'" thành "Có (coi là lỗi)", do đó khiến tất cả các bản dựng tự động bị lỗi.

tôi đã khắc phục vấn đề bằng cách thêm này để Podfile tôi:

post_install do |installer_representation| 
    installer_representation.project.targets.each do |target| 
     target.build_configurations.each do |config| 
      config.build_settings['CLANG_WARN_DIRECT_OBJC_ISA_USAGE'] = 'YES' 
     end 
    end 
end 

Bằng cách này, việc sử dụng trực tiếp của 'isa' sẽ hiển thị như cảnh báo nhưng sẽ không gây ra tự động xây dựng thất bại.

Nhưng trong arm64 iOS Thiết bị xây dựng (với Xcode 5.1.0) lạ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = 'CÓ' tùy chọn sẽ không được áp dụng đúng cách (coi là lỗi). Nếu bạn cần xây dựng, bao gồm cả arm64 chỉ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = 'NO' tùy chọn có thể được sử dụng.

+1

cảm ơn, công trình này. thử nghiệm trong xcode Phiên bản 5.0.2 (5A3005) và mavericks 19.9.1 – keithics

+0

Thật không may, cập nhật pod của tôi không áp dụng bản vá này. Không có chi tiết về lỗi: 'LoadError - không có tệp như vậy để tải ...' Tôi đang làm việc với Xcode 5.1 và i0S 7.1. Bạn có bất kỳ ý tưởng về điều này? Cảm ơn – Lisarien

+0

Lỗi đó không cho tôi biết nhiều. Nếu tôi nhớ chính xác, lỗi được gây ra bởi JSONKit. Nếu lỗi này do một nhóm gây ra, thì bản sửa lỗi này (tôi chưa thử nghiệm) sẽ hoạt động. Nếu không, bạn sẽ có thể sửa nó trong mã của bạn. Bạn đã sửa được nó chưa? – bsarrazin

Các vấn đề liên quan