2013-09-30 2 views
-1

나는 취미로 이제 다음 모든 코딩과 혼란에 좋아하고 나는 애플 개발자 문서의 일부에 익숙하지 않은 구문을 발견 :브라켓 구문은

newSectionsArray[index]

내가 일반적으로 같은 기대 :

[object method]

이 사람이 나에게 이것을 설명 할 수 있습니까?

감사합니다.

+0

'[yourArray objectAtIndex : index] '에 대한 구문 설탕 – HAS

답변

3

[newSectionsArray objectAtIndexedSubscript:index]; 

NSDictionary 구현이 너무 첨자

에 컴파일러에 의해 번역

newSectionsArray[index] 

수록,

그것의 문법 설탕 here을 설명 된대로 액세스 할 수 있도록 그것은, 객체 첨자라고 이러한 방식의 요소 :

dictionary[@"key"] 

멋진 (잠재적으로 위험한) 기능은 일반화되어있어 자신의 수업에도 적용 할 수 있다는 것입니다.

당신은 방법

(인덱스 액세스)

- (id)objectAtIndexedSubscript:(NSUInteger)idx; 
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx; 

또는 (맞 액세스)

- (id)objectForKeyedSubscript:(id)key; 
- (void)setObject:(id)obj forKeyedSubscript:(id)idx; 

당신은 그들이 당신 때마다 호출 될 몇 가지를 구현해야 사용자 정의 클래스의 인스턴스에서 대괄호 표기법을 사용하십시오.

그래서 당신은 그리드 기반의 게임을 코딩하고

board[@"B42"]; // => [board objectForKeyedSubscript:@"B42"] 

에 의해 그리드의 요소에 액세스하거나

board[@"C42"] = @"Troll"; => [board setObject:@"Troll" forKeyedSubscript:@"C42"]; 

니스하여 보드에 조각을 이동 끝낼 수 있었다, 그러나 나는 같으면 그것의 학대.

1

이것은 Clang 3.4에 소개 된 literal syntax입니다. 그러나 이전 구문 인 [newSectionsArray objectAtIndex:index]을 사용할 수 있습니다. 그건 같은거야.

+0

Objective-C 2.0은 오래되었고 10.5와 함께 제공됩니다. 하지만 어쨌든 이상한 버전 관리 협약입니다. 내부적으로 우리는 버전 4-532.2에 있으며, 현재까지 2에서 멀리 떨어져 있습니다.0 (그러나 나는 진화론 적 변화가 잘 팔리지 않는다고 생각한다.) – JustSid

+0

@JustSid 죄송합니다. 먼저 확인 했어야합니다. –

0

newSectionsArray은 배열 (즉, 같은 유형의 여러 객체로 이루어진 연속 블록)이고 정수는 index입니다. newSectionsArray[index]index (0부터 시작) 위치의 개체를 제공합니다.

+0

'newSectionsArray'는이 경우 NSArray 또는 NSMutableArray이고 어떤 객체 유형 ('id') 이건 저장할 수 있습니다 (** 동일한 유형이 아니어야 함 **) – HAS