2012-11-15 3 views
3

설명서에 MacOS 1.08에서 사용할 수 있다고 나와 있습니다.IOS5에서 objectAtIndexedSubscript를 사용할 수 있습니까?

그래서 이야기가 무엇입니까? iOS5는 어떨까요?

뭔가를 놓치지 않으면 self [5]가 실제로 [self objectAtIndexedSubscript : 5]로 바뀔 것이므로 매우 중요한 선택자입니다.

NSOrderedSet에서는 작동하지 않지만 NSArray에서는 작동합니다.

무엇이 누락 되었습니까?

+0

로 교체해야하는'objectAtIndexedSubscript :'아이폰 OS 6에서 추가되었다하지만 첨자 구문은 iOS 5.x에서 작동합니다. 아주 이상한. – rmaddy

답변

3

아니요, 불행히도 iOS 6 이후.

Apple은 OS X 및 iOS API에 대해 별도의 문서를 가지고 있습니다. 올바른 것을 확인해야합니다 : objectAtIndexedSubscript:. 나중에 아이폰 OS 6.0 이상에서 사용할 수

가용성
.

+1

'NSArray' 문서가 이것을 언급하고는 있지만, someArray [index] 구문은 iOS 5.x에서 작동합니다. 그러나 iOS 5.x에서는 런타임시 동일한 구문이 'NSOrderedSet'을 사용하여 충돌합니다. – rmaddy

+1

컴파일 할 때'someArray [index]'는 실제로'[someArray objectAtIndex : index]'로 변환되기 때문입니다. 이 새로운 구문은 컴파일러 기능이며 Xcode 4.4부터 사용할 수 있습니다. 그러나 iOS 6 이후에만'objectAtIndexedSubscript :'를 무시할 수 있습니다. 확실하지는 않지만'NSOrderedSet'는 브래킷 인덱스 구문을 지원하지 않습니다. – DrummerB

+0

나는 새로운 구문으로 컴파일러가 무엇을하는지 이해한다.방금 subscript 구문을'objectAtIndexedSubscript :'메소드로 변환했다고 생각했습니다. 이 메서드를 내 클래스 중 하나에 추가 했으므로이 클래스는 사용자 정의 클래스에서 첨자 구문을 사용할 수 있습니다. – rmaddy

0

은 내가 NSOrderedSet.h 파일을보고 나는이 보았다

- (id)objectAtIndexedSubscript:(NSUInteger)idx NS_AVAILABLE(10_8, 6_0); 

은 그래서 iOS5를 위해 작동하지 않습니다. objectAtIndexedSubscript: 동안

7

첨자 아이폰 OS 6, NSArrayNSDictionary에 이전을 사용할 수없는 것은 사용할 수입니다. 이는 다음과 같은 구문을 사용할 수 있음을 의미합니다.

myArray[2] = @"thingie"; 
myDictionary[@"roger"] = @"barry"; 

it will deploy back to iOS 4.

그러나 NSOrderedSet 서브 스크립팅 은 iOS 5 이전 버전에서는 작동하지 않습니다. 이를 위해서는 번의 전화를 objectAtIndex:으로 리디렉션하는 카테고리를 제공해야합니다.

부록 : NSMutableOrderedSet의 Apple 문서도 올바르지 않습니다. 그것은 Index subscripting이 insert를한다고 말합니다. 실제로는 replace가 (예상 할 수있는 것처럼) 않습니다. 당신이에서 iOS 5에서 실행 코드가 필요한 경우

+0

링크에서 iOS 4가 아닌 iOS 5에 다시 배포한다고 나와 있습니다. – jasongregori

+0

그래, 문서는 iOS 5라고 말하지만 ARClite는 iOS 4와 함께 작동하므로 어느 것이 옳은 것인지 잘 모르겠습니다. 나는 아직 테스트를하지 않았으며, 아마도 거의주의를 기울이지 않았지만, 역사적인 정확성을 기하기 위해서 알면 좋을 것입니다. –

+0

또한 [Steven Fisher 's answer] (http://stackoverflow.com/a/11659848/686385)와 관련된 질문에서 iOS 5 (및 iOS 4) SDK를 구축 할 때 아래 첨자 구문을 사용하는 방법에 대해 설명합니다. –

1

, 당신은 NSArray를 워드 프로세서 상태

myOrderedSetOfHilariousAcronyms[2] = @"ROFL"; 

[myOrderedSetOfHilariousAcronyms setObject:@"ROFL" atIndex:2]; 
관련 문제