제이콥의 대답은 옳다. (그래서 하나만 받아 들여라.)하지만 나는 코코아 프레임 워크가 클래스 클러스터라고 불리는 불쾌한 것을 가지고 있다고 덧붙일 것이다. 아이디어는 [NSArray array]
으로 전화 할 수도 있지만 실제로 돌아 오는 개체는 실제로 특정 상황에 맞게 최적화 된 NSArray
의 개인 하위 클래스입니다. 이러한 편리한 메소드는 NSArray
클래스에 사용할 클래스에 대한 "힌트"를 제공 할 수 있습니다.
예를 들어 [NSArray array]
을 호출하면 비어있는 불변의 배열이 생깁니다. 빈 불변의 배열에는 얼마나 많은 다른 값을 가질 수 있습니까? 딱 하나만. 코코아는 뒤에서 [NSArray array]
을 호출 할 때마다 동일한 공백 인 NSArray
을 반환 할 수 있으므로이 중 하나만 할당하면됩니다. 이것은 약간의 메모리를 절약하는 멋진 최적화입니다.
이제는 구현에 대한 세부 사항을 신경 쓰지 않아도되지만 테이크 어웨이에서는 원하는 결과와 가장 근접하게 일치하는 생성자를 사용해야합니다. 특히 배열, 세트, 응용 프로그램이 더 잘 작동하도록 최적화 된 보트로드를 구현했기 때문에
"+"는 arraryWithObjects가 클래스 메서드임을 나타냅니다. 나는 그것이 왜 인스턴스 메소드 인 것을 암시하는지 나는 모르겠다. – Devoted
@Devoted, [array arrayWithObjects]'는 존재하지 않는 인스턴스 메소드를 호출하려고 시도하고있다. –
Obj-C의 인스턴스에서 클래스 메서드를 호출 할 수 없습니다. 올바른 호출은'[NSArray arrayWithObjects : nil]; ' – kubi