Câu trả lời:
Đó là từ di sản NeXTSTEP .
Mã ban đầu cho các khung công tác Ca cao đến từ các thư viện NeXTSTEP Foundation và AppKit (những tên đó vẫn được sử dụng bởi các khung công tác Cacao của Apple) và các kỹ sư của NextStep đã chọn tiền tố ký hiệu của họ với NS.
Vì Objective-C là phần mở rộng của C và do đó không có không gian tên như trong C ++, các ký hiệu phải được thêm tiền tố với một tiền tố duy nhất để chúng không va chạm. Điều này đặc biệt quan trọng đối với các biểu tượng được xác định trong một khung.
Nếu bạn đang viết một ứng dụng, như vậy mã của bạn chỉ có khả năng sử dụng các ký hiệu của bạn, bạn không phải lo lắng về điều này. Nhưng nếu bạn đang viết một khung hoặc thư viện cho người khác sử dụng, bạn cũng nên thêm tiền tố vào các ký hiệu của mình bằng một tiền tố duy nhất. CocoaDev có một trang nơi nhiều nhà phát triển trong cộng đồng Cacao đã liệt kê các tiền tố "được chọn" của họ. Bạn cũng có thể thấy cuộc thảo luận SO này hữu ích.
N eXT S TEP hoặc N eXTSTEP / S un tùy thuộc vào người bạn đang hỏi.
Sun đã có một khoản đầu tư khá lớn vào OpenStep trong một thời gian. Trước khi Sun bước vào bức tranh, hầu hết mọi thứ trong nền tảng, mặc dù trước đó nó không được biết đến là nền tảng, đã được tiền tố NX , cho N e X T, và đôi khi ngay trước khi Sun bước vào bức tranh, mọi thứ đã được đổi tên thành NS . Các S hầu như không đại diện cho Sun sau đó nhưng sau khi Sun bước vào sự đồng thuận chung là nó đứng cho Sun để tôn vinh sự tham gia của họ.
Tôi thực sự đã có một tài liệu tham khảo cho điều này nhưng tôi không thể tìm thấy nó ngay bây giờ. Tôi sẽ cập nhật bài viết nếu / khi tôi tìm thấy nó một lần nữa.
Đó là di sản NextStep (= NS). NeXT là công ty máy tính mà Steve Jobs thành lập sau khi ông rời Apple năm 1985 và NextStep là hệ điều hành (dựa trên UNIX) cùng với ngôn ngữ và thời gian chạy Obj-C. Cùng với các thư viện và công cụ của nó, NextStep sau đó được đổi tên thành OpenStep (cũng là tên trên một API mà NeXT đã phát triển cùng với Sun), sau đó trở thành Cacao.
Các tên khác nhau này thực sự khá khó hiểu (đặc biệt là vì một số tên chỉ khác nhau trong đó các ký tự là chữ hoa hoặc chữ thường ..), hãy thử điều này để giải thích:
Từ tài liệu dành cho nhà phát triển của Apple:
Lưu ý lịch sử: Nếu bạn đang tự hỏi tại sao rất nhiều lớp bạn gặp phải có tiền tố NS, thì đó là vì lịch sử quá khứ của Ca cao và Ca cao cảm ứng. Ca cao bắt đầu cuộc sống khi các khung thu thập được sử dụng để xây dựng các ứng dụng cho hệ điều hành NeXTStep. Khi Apple mua lại NeXT vào năm 1996, phần lớn NeXTStep đã được tích hợp vào OS X, bao gồm cả các tên lớp hiện có. Cốc Cốc được giới thiệu là tương đương với iOS của Cacao; một số lớp có sẵn trong cả Ca cao và Ca cao cảm ứng, mặc dù cũng có một số lượng lớn các lớp duy nhất cho mỗi nền tảng. Tiền tố hai chữ cái như NS và UI (đối với các thành phần Giao diện người dùng trên iOS) được Apple dành riêng để sử dụng.
Nguồn: Lập trình với Objective-C
Từ Wikipedia_ (API) Wikipedia :
(nhấn mạnh thêm)
Các lớp ca cao bắt đầu bằng từ viết tắt "NS" ( viết tắt của việc tạo ra OpenXep của NeXT-Sun hoặc cho thuật ngữ độc quyền ban đầu cho khung OpenStep, NeXTSTEP ): NSString, NSArray, v.v.
Foundation Kit , hay thường đơn giản hơn là Foundation , lần đầu tiên xuất hiện trong OpenStep . Trên Mac OS X, nó dựa trên Core Foundation. Foundation là một thư viện hướng đối tượng chung cung cấp thao tác chuỗi và giá trị, bộ chứa và lặp, tính toán phân tán, vòng lặp chạy và các chức năng khác không được gắn trực tiếp vào giao diện người dùng đồ họa. Tiền tố "NS" , được sử dụng cho tất cả các lớp và hằng số trong khung, xuất phát từ di sản OPENSTEP của Cacao, được NeXT và Sun cùng phát triển .
Khi NeXT đang xác định API NextStep (trái ngược với hệ điều hành NEXTSTEP), họ đã sử dụng tiền tố NX, như trong NXConstantString. Khi họ đang viết đặc tả OpenStep với Sun (không bị nhầm lẫn với hệ điều hành OPENSTEP), họ đã sử dụng tiền tố NS, như trong NSObject.
Về cơ bản NS đến từ N ext S TEP, hệ điều hành ban đầu đã trở thành Mac OS X khi Apple mua lại Next.
Tôi muốn giải thích một cái gì đó khác và đây là lý do tại sao chính xác nó cần thiết.
Trong C ++ có không gian tên và hầu hết mọi thứ đều có trong std
Đây là lý do tại sao bạn có std :: chuỗi.
Không gian tên được sử dụng để bạn khó mắc lỗi hơn và bạn có thể viết chuỗi lớp của riêng mình mà không xung đột với hệ thống.
Objective-C là siêu bộ của C, nhưng nó không bao gồm các không gian tên và vì lý do tương tự trên tất cả các lớp hệ thống được tiền tố với NS hoặc một số tiền tố lạ khác.
Điều này giống với cách tất cả các lớp DirectX được tiền tố với D3D và cách tất cả các lớp OpenGL được tiền tố với gl .
Điều này có nghĩa là bạn không nên sử dụng NS để đặt tên cho các lớp của riêng bạn và khi bạn thấy NS , CA trong Core Animation hoặc CG trong Core Graphics, bạn hiểu rằng đây là một cuộc gọi đến khung hệ thống.
Swift thay đổi quy ước này, vì Swift hỗ trợ không gian tên và nó ánh xạ các loại cốt lõi của nó như String sang tương đương NS.
Bill Bumgarner aka @bbum, người nên biết , đã đăng trên danh sách gửi thư của Cốc Cốc năm 2005 :
Sun bước vào bức tranh một chút sau khi tiền tố NS đã phát huy tác dụng. Tiền tố NS xuất hiện trong các API công khai trong quá trình chuyển từ NeXTSTEP 3.0 sang NeXTSTEP 4.0 (còn được gọi là OpenStep). Trước 4.0, một số ký hiệu đã sử dụng tiền tố NX, nhưng hầu hết các lớp được cung cấp bởi các thư viện hệ thống hoàn toàn không có tiền tố - List, Hashtable, View, v.v.
Dường như mọi người đều đồng ý rằng tiền tố NX (cho NeXT) đã được sử dụng cho đến năm 1993/1994 và các tài liệu của Apple nói :
API OpenStep chính thức, được xuất bản vào tháng 9 năm 1994, là người đầu tiên phân tách API giữa Foundation và Application Kit và là người đầu tiên sử dụng tiền tố của NS NS.