Tiền tố NS có nghĩa là gì?


Câu trả lời:


456

Đó là từ di sản NeXTSTEP .


7
... hoặc có lẽ là di sản NeXT / Sun (Sun là người tham gia vào tập đoàn OpenStep)
Barry Wark

27
Phải, tất nhiên. Tất cả đều được trình bày đẹp mắt trong các câu trả lời khác, đó là lý do tại sao tôi không bận tâm sao chép thông tin đó vào tài liệu của mình. Xin lỗi nếu điều đó xúc phạm ai đó - Tôi không phiền nếu câu trả lời được chấp nhận thay đổi thành một trong những câu hỏi khác (nếu có thể - không bao giờ kiểm tra điều đó).
Olaf Kock

2
Tôi muốn xem chi tiết nhưng liên kết để NeXTSTEP
Bagrat Kirakosian

784

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.


150

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.


4
Tôi đã nghe câu chuyện tương tự từ một nguồn rất đáng tin cậy; Tôi khá chắc chắn đây là câu trả lời chính xác nhất ở đây.
Tyler

2
Tôi tìm thấy một tài liệu tham khảo: cocoabuilder.com/archive/cocoa/136618-what-does-ns-means.html
Simon Woodside

Liên kết @SimonWoodside đã chết.
Dinsdale

Lưu trữ tài liệu tham khảo trên Internet: web.archive.org/web/20151008121657/http://www.cocoabuilder.com/ từ
Simon Woodside

53

Đó 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:

TheMerger OpenstepConfusion


4
Tôi có thể đã tuyên thệ Apple sa thải anh ta vì nhiều lý do.
Vụ kiện của Quỹ Monica

43

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


23

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 NeXTSun cùng phát triển .


Wikipedia là sai ở đây. Foundation Kit xuất hiện lần đầu tiên trong Khung đối tượng doanh nghiệp , trước OpenStep. Ngẫu nhiên, phiên bản NeXT của Foundation được cho là dựa trên API C giống như CoreFoundation, nhưng không được hiển thị dưới dạng giao diện công khai cho đến khi Mac OS X.

@ user23743, tôi không nghĩ bạn đúng. EOF có trước hệ điều hành OPENSTEP, nhưng không phải API OpenStep. Tài liệu EOF mà bạn đã liên kết trực tiếp (tham khảo OpenStep) [ cilinder.be/docs/next/NeXTStep/3.3/nd/Foundation/ , và cả hai đều được phát hành vào năm 1994.
AriX

12

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.


10

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.


6

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.