2009-01-23 45 views

Trả lời

377

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

+7

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

+24

Có, tất nhiên. Tất cả đều được đặt ra 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. Xin lỗi nếu điều đó xúc phạm đến ai đó - Tôi không ngại nếu câu trả lời được chấp nhận thay đổi thành một trong những người khác (nếu có thể - không bao giờ kiểm tra điều đó). –

+1

Tôi muốn xem thêm nhưng liên kết tới NeXTSTEP –

726

Mã ban đầu cho khuôn khổ Cocoa đến từ các thư viện Foundation và AppKit NeXTSTEP (các tên này vẫn được sử dụng bởi khung công tác Cocoa của Apple) và các kỹ sư NextStep đã chọn tiền tố ký hiệu của chúng với NS.

Vì Mục tiêu-C là phần mở rộng của C và do đó không có các không gian tên như trong C++, các ký hiệu phải được thêm tiền tố với 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 định nghĩa trong một khung công tác.

Nếu bạn đang viết một ứng dụng, chẳng hạn như mã của bạn chỉ có khả năng sử dụng các biểu tượng 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 để sử dụng cho người khác, bạn cũng nên thêm tiền tố cho các ký hiệu của bạn với một tiền tố duy nhất. CocoaDev has a page nơi nhiều nhà phát triển trong cộng đồng Cocoa đã liệt kê tiền tố "đã chọn" của họ. Bạn cũng có thể tìm thấy this SO discussion hữu ích.

+5

Liên kết CocoaDev không hoạt động nữa –

48

Đây 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 (UNIX) cùng với ngôn ngữ Obj-C và thời gian chạy. Cùng với thư viện và các 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), mà sau này trở thành Cocoa.

Những tên gọi khác nhau là thực sự khá khó hiểu (đặc biệt là kể từ khi một số trong những cái tên duy nhất mà nhân vật là chữ hoa hoặc thấp hơn .. khác), hãy thử điều này cho một lời giải thích:

TheMerger OpenstepConfusion

+0

Tôi có thể thề là Apple đã sa thải anh vì nhiều lý do khác nhau. –

139

N eXT S TEP hoặc N eXTSTEP/S un tùy thuộc vào người bạn đang yêu cầu.

Sun đã đầu tư khá lớn vào OpenStep trong một thời gian. Trước khi Mặt trời bước vào hình ảnh hầu hết mọi thứ trong nền móng, mặc dù nó không được gọi là nền tảng sau đó, được đặt trước NX, cho N e X T, và đôi khi ngay trước khi Mặt trời bước vào ảnh mọi thứ đổi tên thành NS. Các S rất có thể đã không đứng 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 tham chiếu 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 đăng nếu/khi tôi tìm lại nó.

+4

Tôi đã nghe cùng một câu chuyện 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 tham chiếu: http://www.cocoabuilder.com/archive/cocoa/136618-what-does-ns-means.html –

9

Khi NeXT 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ọ 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.

20

Từ Cocoa_(API) Wikipedia:

(nhấn mạnh thêm)

lớp Cocoa bắt đầu với những từ viết tắt "NS" (đứng hoặc cho việc tạo ra NeXT-Sun của OPENSTEP, hoặc cho thuật ngữ độc quyền ban đầu cho khung OpenStep, NeXTSTEP): NSString, NSArray, v.v.

Bộ nền tảng hoặc thường đơn giản là Nền tảng, xuất hiện lần đầu tiên trong OpenStep. Trên Mac OS X, nó dựa trên nền tảng Core. Foundation là một thư viện hướng đối tượng chung cung cấp chuỗi và giá trị thao tác, chứa và lặp lại, tính toán phân tán, chạy các vòng và các chức năng khác không được gắn trực tiếp với giao diện người dùng đồ họa . Các "NS" tiền tố, được sử dụng cho tất cả các lớp học và các hằng số trong khuôn khổ, xuất phát từ di sản OPENSTEP Cocoa, mà cùng đã được phát triển bởi NeXTSun.

+0

Wikipedia đã sai ở đây. Foundation Kit [xuất hiện lần đầu trong khung Enterprise Objects] (http://www.cilinder.be/docs/next/NeXTStep/3.3/nd/Foundation/HybridWorld.htmld/index.html), trước đó là OpenStep. Ngẫu nhiên, phiên bản NeXT của Foundation được cho là dựa trên một API C giống như CoreFoundation, nhưng nó không được hiển thị như giao diện công khai cho đến Mac OS X. –

+6

Ah WTH Tôi đã chỉnh sửa wikipedia quá :-). –

+0

@ 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 là API OpenStep. Tài liệu EOF bạn đã liên kết trực tiếp (tài liệu tham khảo OpenStep) [http://www.cilinder.be/docs/next/NeXTStep/3.3/nd/Foundation/IntroFoundation.htmld/] và cả hai đều được phát hành vào năm 1994. – AriX

37

Từ tài liệu nhà phát triển của Apple:

Lịch sử Lưu ý: Nếu bạn đang tự hỏi tại sao rất nhiều của các lớp bạn gặp phải một tiền tố NS, đó là vì lịch sử quá khứ của Cocoa và Cocoa Touch. Cocoa bắt đầu cuộc sống như là các khung được 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 NeXT vào năm 1996, phần lớn NeXTStep được tích hợp vào OS X, bao gồm cả tên lớp hiện có. Cocoa Touch được giới thiệu là tương đương với iOS của Cocoa; một số lớp có sẵn trong cả Cocoa và Cocoa Touch, 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. Các tiền tố hai chữ cái như NS và Giao diện người dùng (đối với các thành phần Giao diện người dùng trên iOS) được dành riêng để sử dụng bởi Apple.

Nguồn: Programming with Objective-C

5

Bill Bumgarner aka @bbum, who should know, đăng tải trên CocoaBuilder mailing list in 2005:

Sun bước vào bức tranh một chút sau khi tiền tố NS đã đi vào chơi. Tiền tố NS xuất hiện trong các API công cộng trong khi di chuyển từ NeXTSTEP 3.0 sang NeXTSTEP 4.0 (còn được gọi là OpenStep). Trước 4.0, một số ít các biểu tượng dùng tiền tố NX, nhưng hầu hết các lớp học được cung cấp bởi các thư viện hệ thống không tiền tố ở tất cả - Danh sách, Hashtable, View, vv ...

Dường như tất cả mọi người đồng ý rằng NX tiền tố (ví NeXT) được sử dụng cho đến khi 1993/1994, và Apple's docs say:

các OPENSTEP API chính thức được công bố vào tháng chín năm 1994, là người đầu tiên để phân chia các API giữa Foundation và ứng dụng Kit và đầu tiên sử dụng tiền tố “NS”.

4

Về cơ bản NS đến từ N ext S TEP, hệ điều hành ban đầu mà trở thành Mac OS X khi Apple mua lại Next.

Tôi muốn giải thích điều gì khác và đây là lý do tại sao chính xác là cần thiết.

Trong C++ có không gian tên và hầu hết mọi thứ đi trong std

Đây là lý do tại sao bạn đã std :: string.

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.

Mục tiêu-C là phần lớn của C, nhưng 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 preffixed với NS hoặc một số preffix lạ khác.

điều này là như nhau như thế nào tất cả các lớp DirectX được preffixed với D3D và làm thế nào tất cả các lớp học OpenGL được preffixed với gl.

Điều này có nghĩa rằng bạn không nên sử dụng NS để đặt tên cho các lớp học của riêng bạn và khi bạn nhì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 một hệ thống khuôn khổ.

Swift thay đổi quy ước này, bởi vì Swift hỗ trợ đặt tên không gian và nó ánh xạ các loại lõi của nó như Chuỗi tới các giá trị tương đương của NS.

0

Tiếp theoBước. Đó là điểm dừng khi mục tiêu-c được tạo bởi NeXT thành ghi bước tiếp theo (sau os x) và tất cả các ứng dụng liên quan, v.v. đại diện cho các yếu tố không thuộc nền tảng C ban đầu, ví dụ: 'chuỗi' phần tử trong C, vì vậy trong mục tiêu-c, nó là một yếu tố nền tảng bổ sung 'NSString'.

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