2011-09-12 4 views
0

누군가 특정 "id 유형 설명서"를 가르쳐 줄 수 있습니까? 동적 타이핑 문서를 살펴 봤지만 유형 ID를 사용하는 방법을 알고 싶습니다. 특히 id가 null인지 확인하는 방법.id 동적 유형 설명서

답변

3

id 유형은 원래 태그가 암시 한 것처럼 Cocoa/Cocoa Touch 프레임 워크가 아닌 Objective-C 언어와 직접 관련이 있습니다. 또한 동적 타이핑이 필요하지 않습니다. Here's a little introduction in Apple's docs.

은 위의 링크에서 인용 특정 질문에 대답하려면 :

키워드 nil가 null 객체로 정의되고, 0의 값을 갖는 id. id, nil이고 다른 기본 유형의 Objective-C는 헤더 파일 objc/objc.h에 정의되어 있습니다.

nilNULL은 (제로 포인터) 상당, 따라서 교환 할 수있다. 내가 질문을 잘못 이해하는 경우

id myId = [[something alloc] init]; 

// Short for if (myId == nil) 
if (!myId) { 
    // myId is nil 
} else { 
    // myId is not nil 
} 
+0

'id'이처럼입니다 * 경로 와일드 카드에서. 이는 대개 대리자 유형을 정의하기 위해 카테고리와 함께 사용됩니다. 예 : id ZhangChn

+0

싱글 톤 객체 NSNull은 언제 사용됩니까? 고맙습니다. –

+0

Apple에서 직접 얻었습니다. "NSNull 클래스는 nil이 값 (일반적으로 배열이나 사전과 같은 컬렉션 객체)에서 금지되는 상황에서 null 값을 나타내는 데 사용하는 단일 객체를 정의합니다." –

0

죄송합니다,하지만 당신은 단지 같은 것을하지 않을 것입니다 :

if 문 기본에서

, 당신은 이렇게 기본적으로 당신이 id를 사용

// given 
id sender; 

if (sender == nil) {} 

을 할당 된 모든 객체를 잡으려고합니다. 그래서 당신은 같은 것을 수행 할 수 있습니다

id name = [NSString stringWithString:@"john"]; 

을 지금 이름은 [name class]를 호출하여 확인할 수있는 NSString 대상이 될 것입니다.

자세한 내용은 this page의 ID 섹션을 참조하십시오.

+0

그래, 내가 생각한 thats도,하지만 난 그냥 null 대신에 [NSNull null]로 설정된 id 개체를 얻고있다, "if (myIdVar)"체크가 작동하지 않는다 ... 왜 그저 그 내가하는 일에 특유하다. –

1

The Objective-C Programming Language - 특히 개체, 클래스 및 메시징 장을 참조하십시오.

Objective-C에서 개체 식별자는 고유 한 데이터 형식 인 id입니다. 이 유형은 클래스에 관계없이 모든 종류의 객체에 대한 일반적인 유형이며 클래스의 인스턴스 및 클래스 객체 자체에 사용할 수 있습니다. [...]

키워드 nil은 null 개체, 값이 0 인 ID로 정의됩니다. id, nil 및 기타 기본 유형의 Objective-C는 헤더 파일 objc/objc.h에 정의되어 있습니다.

값으로 변수를 비교하려면 == 연산자를 사용하면됩니다. 그래서 nil을 테스트하기 위해, 당신이 할 :

id 객체에 대한 포인터로 정의됩니다 : 나는 확실히 그것을 본 나는 여기 말할 것이다, 그래서 다른 답변에서 언급 한 적이 없다

someVariable == nil 
1

.(ID) 0 - 0 -

nil

는 ID와 제로 캐스트하는 결과로 다음 코드를

NSString * myString = nil; 
id idString = myString; 
if (idString == nil) NSLog(@"idString == nil"); 
if (idString == NULL) NSLog(@"idString == NULL"); 
if (idString == (id)0) NSLog(@"idString == (id)0"); 

는 다음과 같은 출력이됩니다

2011-09-12 07:25:57.297 Sample Project[22130:707] idString == nil 
2011-09-12 07:25:57.298 Sample Project[22130:707] idString == NULL 
2011-09-12 07:25:57.299 Sample Project[22130:707] idString == (id)0