NS 접두사는 무엇을 의미합니까?


답변:


456

그것은 NeXTSTEP 유산 에서 온 것 입니다.


7
... 혹은 넥스트 / 일 유산 (썬은 오픈 스텝 컨소시엄에 참여했다)
배리 Wark

27
물론입니다. 그것은 다른 답변에 아름답게 배치되어 있기 때문에 그 정보를 내 것으로 복사하는 것을 귀찮게하지 않았습니다. 그것이 누군가를 화나게하는 경우 미안합니다. 허용 된 답변이 다른 사람 중 하나로 변경 되어도 괜찮습니다 (가능한 경우-절대 확인하지 마십시오).
Olaf Kock

2
좀 더보고 싶어하지만 것 넥스트 스텝에 대한 링크
바그 라트 Kirakosian

784

Cocoa 프레임 워크의 원래 코드는 NeXTSTEP 라이브러리 Foundation 및 AppKit (이 이름은 여전히 ​​Apple의 Cocoa 프레임 워크에서 사용됨) 에서 가져 왔으며 NextStep 엔지니어는 심볼 앞에 NS를 추가하기로했습니다.

Objective-C는 C의 확장이므로 C ++에서와 같이 네임 스페이스가 없으므로 기호 앞에 고유 한 접두사가 붙어서 충돌하지 않도록해야합니다. 이것은 프레임 워크에 정의 된 심볼에 특히 중요합니다.

코드에서 기호 만 사용할 가능성이있는 응용 프로그램을 작성하는 경우에는 걱정할 필요가 없습니다. 그러나 다른 사람이 사용할 수 있도록 프레임 워크 또는 라이브러리를 작성하는 경우 기호 앞에 고유 접두사를 붙여야합니다. CocoaDev에는 Cocoa 커뮤니티의 많은 개발자들이 "선택한"접두사를 나열한 페이지 가 있습니다. 이 SO 토론이 도움 될 수도 있습니다.


150

요청한 사람에 따라 N eXT S TEP 또는 N eXTSTEP / S un이 있습니다.

썬은 한동안 OpenStep에 상당히 많은 투자를했습니다. 썬은이 당시 기초로 알려져 있지에도 불구하고, 재단에서 사진 가장 일을 입력하기 전에, 접두사 된 NX를 들어, N E X T, 썬은 사진의 모든 것이로 변경되었습니다 입력 언젠가 직전 NS . S는 대부분 다음 일을 위해 서 있지만, 일이 일반적인 합의 밟은 후 자신의 참여를 존중하는 일에 대해 서 것이었다하지 않았다.

실제로 이것에 대한 참조가 있었지만 지금은 찾을 수 없습니다. 게시물을 다시 찾은 경우 업데이트합니다.


4
나는 믿을만한 소식통에서 같은 이야기를 들었습니다. 이것이 가장 정확한 대답이라고 확신합니다.
Tyler


@SimonWoodside Link가 종료되었습니다.
Dinsdale


53

NextStep (= NS) 유산입니다. NeXT는 Steve Jobs가 1985 년에 Apple을 종료 한 후 설립 한 컴퓨터 회사였으며 NextStep은 Obj-C 언어 및 런타임과 함께 운영 체제 (UNIX 기반)였습니다. NextStep은 라이브러리 및 도구와 함께 나중에 OpenStep (NexT가 Sun과 함께 개발 한 API의 이름이기도 함)으로 이름이 바뀌었고 나중에 코코아가되었습니다.

이러한 다른 이름은 실제로 매우 혼동됩니다 (특히 일부 이름은 문자가 대문자 또는 소문자 만 다르므로). 설명을 위해 다음을 시도하십시오.

The Merger OpenstepConfusion


4
나는 여러 가지 이유로 애플을 해고 할 수 있다고 선포했다.
Fund Monica의 소송

43

Apple 개발자 문서에서 :

역사적 메모 : 왜 그렇게 많은 클래스에 NS 접두사가 있는지 궁금하다면, 과거의 Cocoa와 Cocoa Touch의 역사 때문입니다. Cocoa는 NeXTStep 운영 체제 용 앱을 구축하는 데 사용되는 수집 된 프레임 워크로 시작되었습니다. Apple이 1996 년 NeXT를 다시 구입했을 때 기존 클래스 이름을 포함하여 NeXTStep의 많은 부분이 OS X에 통합되었습니다. Cocoa Touch는 iOS와 동등한 Cocoa로 소개되었습니다. 일부 클래스는 Cocoa 및 Cocoa Touch 모두에서 사용할 수 있지만 각 플랫폼마다 고유 한 클래스가 많이 있습니다. NS 및 UI (iOS의 사용자 인터페이스 요소 용)와 같은 두 글자 접두사는 Apple에서 사용하도록 예약되어 있습니다.

출처 : Objective-C를 사용한 프로그래밍


23

에서 Cocoa_ (API) 위키 백과 :

(강조 추가)

Cocoa 클래스는 약어 "NS"로 시작 합니다 ( OpenXNeXT-Sun 작성 또는 OpenStep 프레임 워크, NeXTSTEP 의 원래 독점 용어 ) : NSString, NSArray 등

Foundation Kit 또는 더 일반적으로 FoundationOpenStep 에서 처음 등장했습니다 . Mac OS X에서는 Core Foundation을 기반으로합니다. Foundation은 문자열 및 값 조작, 컨테이너 및 반복, 분산 컴퓨팅, 실행 루프 및 그래픽 사용자 인터페이스에 직접 연결되지 않은 기타 기능을 제공하는 일반적인 객체 지향 라이브러리입니다. 프레임 워크의 모든 클래스와 상수에 사용되는 "NS"접두사 NeXTSun 이 공동으로 개발 한 Cocoa의 OPENSTEP 유산에서 온 것 입니다.


Wikipedia가 잘못되었습니다. Foundation Kit 는 OpenStep 이전의 Enterprise Objects Framework에 처음 등장했습니다 . 우연히도 NeXT 버전의 Foundation은 CoreFoundation과 유사한 C API를 기반으로했지만 Mac OS X까지 공개 인터페이스로 노출되지 않았습니다.

@ user23743, 당신이 옳지 않다고 생각합니다. EOF는 OpenStep API가 아닌 OPENSTEP 운영 체제보다 이전 버전입니다. 직접 연결 한 EOF 문서 (OpenStep 참조) [ cilinder.be/docs/next/NeXTStep/3.3/nd/Foundation/… 및 둘 다 1994 년에 릴리스되었습니다.
AriX

12

NeXT가 NEXTSTEP 운영 체제와 달리 NextStep API를 정의 할 때 NXConstantString에서와 같이 접두사 NX를 사용했습니다. OPENSTEP 운영 체제와 혼동하지 말고 Sun에서 OpenStep 사양을 작성할 때 NSObject에서와 같이 NS 접두사를 사용했습니다.


10

기본적으로 NS는 에서 온다 N의 내선 S TEP, 애플이 다음을 인수 할 때 맥 OS X가 된 원래 운영 체제.

나는 다른 것을 설명하고 싶기 때문에 이것이 정확히 필요한 이유입니다.

C ++에는 네임 스페이스가 있으며 거의 ​​모든 것이 std에 들어갑니다.

이것이 std :: string을 갖는 이유입니다.

네임 스페이스는 사용하기 때문에 실수하기가 어렵고 시스템과 충돌하지 않고 자신 만의 클래스 문자열을 작성할 수 있습니다.

Objective-C는 C의 상위 집합이지만 네임 스페이스를 포함하지 않으며 같은 이유로 모든 시스템 클래스 앞에 NS 또는 다른 이상한 접두사가 붙습니다.

이 점은 모든 다이렉트 클래스로 시작하는 방법의 동일 D3D 모든 OpenGL을 클래스로 시작하는 방법 GL .

즉, NS 를 사용 하여 클래스 이름을 지정 하지 않아야 하며 Core Animation에서 NS , CA 또는 Core Graphics에서 CG 를 볼 때 이것이 시스템 프레임 워크에 대한 호출임을 이해합니다.

Swift는 네임 스페이스를 지원하고 String과 같은 핵심 유형을 NS와 동등한 유형으로 매핑하므로 Swift는이 규칙을 변경합니다.


6

Bill Bumgarner ( 일명 @bbum) 는 2005 년 CocoaBuilder 메일 링리스트에 게시했습니다 .

NS 접두사가 시작된 후 Sun은 그림에 약간 들어갔다. NS 접두사는 NeXTSTEP 3.0에서 NeXTSTEP 4.0 (OpenStep이라고도 함)으로 이동하는 동안 공개 API에서 발생했습니다. 4.0 이전에는 소수의 기호가 NX 접두사를 사용했지만 시스템 라이브러리에서 제공하는 대부분의 클래스에는 List, Hashtable, View 등의 접두사가 전혀 없었습니다.

NX (NexT 용) 접두어는 1993/1994까지 사용되었으며 Apple의 문서는 다음 과 같이 말합니다 .

1994 년 9 월에 공개 된 공식 OpenStep API는 Foundation과 Application Kit간에 API를 분할 한 최초의 제품이며 "NS"접두어를 사용한 최초의 제품이었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.