C와 마찬가지로 목표 C에는 네임 스페이스가 없습니다. 이것은 누군가가 이미 함수 foo
또는 클래스를 정의한 경우 Bar
전역 적으로 고유해야하며 정의 할 수 없음을 의미합니다. 코드가 있고 다른 라이브러리를 추가하면 갑자기 이상한 곳에서 문제가 발생할 수 있습니다.
가 이다 이 애플 제시 한 가이드 라인 표기 : 목표 C 프로그래밍 아이폰 OS 개발자 라이브러리 섹션 :
일부 이름은 앱에서 고유해야합니다.
새로운 유형, 기호 또는 식별자를 만들 때마다 먼저 이름이 고유해야하는 범위를 고려해야합니다. 때때로이 범위는 연결된 프레임 워크를 포함한 전체 응용 프로그램 일 수 있습니다. 때로는 범위가 단지 묶는 클래스 또는 심지어 코드 블록으로 제한됩니다.
클래스 이름은 전체 앱에서 고유해야합니다
Objective-C 클래스는 프로젝트에서 작성하는 코드뿐만 아니라 포함 할 수있는 모든 프레임 워크 또는 번들에서 고유하게 이름을 지정해야합니다. 예를 들어, ViewController 또는 TextParser와 같은 일반 클래스 이름을 사용하지 마십시오. 앱에 포함하는 프레임 워크가 규칙을 따르지 않고 동일한 이름으로 클래스를 만들지 못할 수 있습니다.
클래스 이름을 고유하게 유지하려면 모든 클래스에 접두사를 사용하는 것이 규칙입니다. Cocoa 및 Cocoa Touch 클래스 이름은 일반적으로 NS 또는 UI로 시작합니다. 이와 같은 두 글자 접두사는 프레임 워크 클래스에서 사용하기 위해 Apple에 의해 예약되어 있습니다. Cocoa 및 Cocoa Touch에 대한 자세한 내용을 살펴보면 특정 프레임 워크와 관련된 다양한 접두사가 나타납니다.
...
자신의 클래스는 세 개의 접두사를 사용해야합니다. 회사 이름과 앱 이름의 조합 또는 앱 내의 특정 구성 요소와 관련이있을 수 있습니다. 예를 들어 회사가 Whispering Oak라고하고 Zebra Surprise라는 게임을 개발하는 경우 클래스 접두사로 WZS 또는 WOZ를 선택할 수 있습니다.
따라서, 여러분이 언급 한 라이브러리는 이러한 관례를 어기는 것이지만, Objective C 내에서 이름 공간이 부족하다는 문제의 핵심입니다.
NSHipster에 의한 추가 읽기 이름 지정
Objective-C 네임 스페이스 충돌을 해결하는 가장 좋은 방법은 무엇입니까?
iOS objective-c 코드에서 네임 스페이스를 어떻게 사용합니까?
;-)