2009-06-30 7 views
5

언제 당신이 언제 *와 같은 심볼을 필요로합니까 (이는 NSString과 같은 모든 변수가 포인터 변수이기 때문에 객관적입니다)?포인터의 Objective-C 사용

예를 들어 "NSString"대신 "NSString *"을 사용해야하는 경우가 있습니까?

답변

8

Objective-C에서 모든 개체 참조는 포인터이므로 Objective-C 개체로 선언 할 때 항상 포인터 연산자가 필요합니다.

다른 유형의 경우 사용법은 C와 동일합니다. 참조로 데이터 구조 나 기본 유형을 전달하려면 포인터를 사용하십시오.

+1

예외는 "id"유형으로 C의 void *와 거의 동일하므로 유형에 별표가 포함됩니다. –

3

모든 Objective-C 개체 (예 : NSDictionary, NSString, NSNumber)에 별표를 사용합니다.

기본 유형 (int, double, float) 인 경우 별표가 필요하지 않습니다. 그러나 NS 접두사가 항상 별표를 사용해야한다는 것을 의미하지는 않습니다. 코코아는 기본 유형을 기반으로하는 일부 구조 (예 : NSInteger, NSRect, NSPoint)를 정의합니다. 여기서 별표를 사용하지 마십시오. 예를 들어, NSRect는 NSPoint와 NSSize의 구조이며, 둘 다 2 개의 CGFloat (기본 유형)로 구성됩니다.

* 표기법을 사용하여 이러한 기본 유형 또는 구조 중 하나에 포인터를 전달할 수 있습니다.