2014-09-19 17 views
5

việc Ứng dụng của tôi hoàn toàn tốt đẹp cho đến khi tôi tải Xcode mới, bây giờ nó chặn lại bởi lỗi "tín hiệu SIGABRT" và điểm cho việc này:ứng dụng ra mắt Cant với Xcode mới 6

[PlaceHolder setDescription:]: unrecognized selector sent to instance 0x79838900 
    Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PlaceHolder setDescription:]: unrecognized selector sent to instance 0x79838900' 

Tôi biết, thông tin đó có thể không đủ để hiểu những gì đang xảy ra, nhưng tôi không biết bắt đầu tìm kiếm ở đâu. Nếu có lỗi với phương pháp setter, tại sao ứng dụng của tôi hoạt động trước đây? Có bất kỳ thay đổi mới nào ngăn ứng dụng khởi chạy không?

PlaceHolder là một đối tượng, giữ các thuộc tính (như liên kết hình ảnh, văn bản, v.v.). Ngoài ra, có cảnh báo "màu vàng" mới - Auto property synthesis will not synthesize property 'description' because it is 'read-write' but it will be synthesized 'read-only' via another property

+1

thư mục dữ liệu bị xóa sạch trong ứng dụng của bạn -> Sắp xếp -> Dự án -> Ứng dụng của bạn. –

+1

'mô tả' là lĩnh vực của bạn tùy chỉnh lớp học? Nếu bạn có thể đổi tên nó, làm điều đó, mô tả dường như được sử dụng ở đâu đó trong os như một từ khóa. –

Trả lời

10

Dường như bạn đã xác định thuộc tính description. Rất tiếc, NSObject đã có phương thức description. Vì bạn có lẽ không cố ý cố gắng ghi đè phương thức này trong lớp con của bạn, điều này có lẽ không phải là một hoạt động an toàn. Có vẻ như dưới SDK iOS 7 và Xcode 5, thuộc tính của bạn đã thay thế phương thức trên NSObject. Trong SDK iOS 8 và Xcode 6, đây không phải là trường hợp (có thể do những thay đổi trong cách thức phương thức -description được xác định) để bạn có được hành vi khác nhau.

Cân nhắc đổi tên thuộc tính này để tránh xung đột như vậy. description là một công cụ gỡ lỗi hữu ích và bạn có thể không muốn từ bỏ lớp này một cách vô tình.

+0

Hình như 'description' đã trở thành tài sản trong iOS 8: http://www.redwindsoftware.com/blog/post/2014/08/20/NSObject-has-some-new-properties-in-iOS-8. aspx – Jonah

+0

Cảm ơn bạn đã làm rõ Jonah! –

8

cảm ơn bạn rất nhiều vì đã trợ giúp.

Mô tả là một tài sản của lớp giữ chỗ:

@property (nonatomic, retain) NSString *description; 

Vấn đề đã được giải quyết đơn giản là đặt @synthesize description; trong việc thực hiện (.m) tập tin của lớp giữ chỗ. Đối với một số lý do, Xcode mới tổng hợp nó thông qua "chỉ đọc" tài sản, và đó gây ra một lỗi SIGBART, bởi vì ứng dụng đã cố gắng ghi vào tài sản này (được đọc chỉ vì một lý do nào đó).

Tôi hy vọng thông tin đó có thể hữu ích cho người nào đó, những người gặp phải sự cố tương tự.

+1

Tôi đã sử dụng thuộc tính có tên là "tên" và đang gặp sự cố tương tự. Vì lý do này, tôi đặc biệt sử dụng chức năng tùy chỉnh của biến này (thay vì mô tả ghi đè), vì vậy câu trả lời này đã khắc phục được sự cố của tôi. – ColdLogic

+0

vui vì tôi có thể giúp bạn ColdLogic –

+0

Mặc dù vậy an toàn như thế nào? Chúng ta có bao giờ gặp phải vấn đề khi làm việc này không? – raulriera

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