Development Tip

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

yourdevel 2020. 10. 3. 12:06
반응형

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


Cocoa / Cocoa Touch의 많은 클래스에는 NS 접두사가 있습니다. 무슨 뜻이에요?


그것은에서의 넥스트 스텝의 유산.


Cocoa 프레임 워크의 원래 코드는 NeXTSTEP 라이브러리 Foundation 및 AppKit 에서 나 왔으며 (이 이름은 여전히 ​​Apple의 Cocoa 프레임 워크에서 사용됨) NextStep 엔지니어는 기호 접두사를 NS로 선택했습니다.

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

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


요청하는 사람에 따라 N eXT S TEP 또는 N eXTSTEP / S.

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

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


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

이러한 다른 이름은 실제로 매우 혼란 스럽습니다 (특히 일부 이름은 대문자 또는 소문자 만 다릅니다 ..), 설명을 위해 다음을 시도하십시오.

TheMerger OpenstepConfusion


Apple의 개발자 문서에서 :

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

출처 : Objective-C 프로그래밍


에서 Cocoa_ (API) 위키 백과 :

(강조 추가됨)

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

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


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


기본적으로 NSApple이 Next를 인수했을 때 Mac OS X가 된 원래 운영 체제 인 N ext S TEP 에서 제공됩니다 .

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

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

이것이 std :: string이있는 이유입니다.

네임 스페이스가 사용되므로 실수하기가 더 어려워지고 시스템 문자열과 충돌하지 않고 자신 만의 클래스 문자열을 작성할 수 있습니다.

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

이것은 모든 DirectX 클래스가 D3D 로 프리픽스되는 방식과 모든 OpenGL 클래스가 gl 프리픽스되는 방식과 동일 합니다.

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

Swift는 네임 스페이스를 지원하고 String과 같은 핵심 유형을 NS 등가물에 매핑하기 때문에 Swift는이 규칙을 변경합니다.


Bill Bumgarner 일명 @bbum 은 2005 년 CocoaBuilder 메일 링리스트에 올렸습니다 .

썬은 NS 접두사가 등장한 직후에 그림에 들어갔다. 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"접두사를 처음으로 사용했습니다.

참고URL : https://stackoverflow.com/questions/473758/what-does-the-ns-prefix-mean

반응형