Câu hỏi __NSArrayI và __NSArrayM là gì? Làm thế nào để chuyển đổi sang NSArray?


__NSArrayI và __NSArrayM là gì?

__NSArrayI (hoặc M) gây ra lỗi "bộ chọn không nhận dạng".

Làm thế nào để chuyển đổi sang NSArray?


Tôi đã kiểm tra để phân tích cú pháp json, twitter api.

http://api.twitter.com/1/followers/ids.json?cursor=-1&screen_name=twitterapi

==> hoạt động tốt. đối tượng được phân tích cú pháp là lớp NSCFDictionary. (Từ điển này chứa lớp __NSArrayM)

http://api.twitter.com/1/statuses/user_timeline.json?&screen_name=twitterapi

==> lỗi. đối tượng được phân tích cú pháp là lớp __NSArrayM.


30
2017-10-07 08:12


gốc


Đăng mã cung cấp cho bạn một lỗi. - Vladimir
__NSArrayI => Không thể thay đổi NSArray __NSArrayM => Mutable NSArray - Totumus Maximus
Đồng thời đăng thông báo chọn không được chấp nhận. - JeremyP


Các câu trả lời:


__NSArrayI là một từ mã cho một mảng bất biến - đó là, một "thường xuyên" NSArray mà bạn không thể thay đổi.

__NSArrayM là một từ mã cho một mảng có thể thay đổi - tức là, NSMutableArray. Trong NSMutableArray, bạn có thể thêm và xóa các mục.


71
2017-10-07 08:16



Nice - bạn tìm thấy kiến ​​thức này ở đâu? Bởi chỉ cần đọc trực tiếp nguồn gốc của thời gian chạy? Hoặc có một số loại tài liệu ở đâu đó. - sean
Tên là một đầu mối tốt ("M" và "I" trong bối cảnh mảng không thể có nghĩa là nhiều nhưng có thể thay đổi và không đổi), nhưng cách tốt nhất là kiểm tra các đối tượng mà bạn biết là NSArrays sử dụng object_getClass (). - Catfish_Man
@Catfish_Man sáu - 无夜之星辰


Đây là các lớp của api riêng. Ở đó là một dự án nơi bạn có thể xem tất cả các lớp của api riêng. Bạn không được phép sử dụng chúng bên trong một ứng dụng cho app store nhưng đôi khi nó cũng hữu ích để xem cách truy cập các đối tượng và cũng là loại đối tượng của nó. Chúng không thể được chuyển đổi. Tôi nghĩ, việc nhận các loại đối tượng này bên trong trình gỡ rối chỉ là biểu diễn của các lớp bên trong, cho các lớp bạn đang sử dụng bên trong dự án của bạn. Biết được loại lớp học nào, cho phép bạn cũng hiểu nơi để tìm sự cố bên trong mã của bạn.

Ở đây bạn có thể thấy một tra cứu ngắn của cả hai:

__NSArrayI

enter image description here

__NSArrayM

enter image description here


4
2018-04-10 14:28





Đây là các lớp học riêng. Bạn không nên truy cập chúng hoặc chuyển đổi chúng.

Nếu tôi không nhầm NSArray là lớp con của _NSArray.

Nếu bạn đang thêm / xóa một số đối tượng vào / từ mảng của bạn, hãy kiểm tra xem nó có thuộc loại có thể thay đổi không: NSMutableArray


1
2017-10-07 08:15