2011-09-02 9 views
0

어떻게 포인터를 메소드에서 param으로 전달합니까? 예 :포인터가 메소드 params - objective-c

-(void) dosomething:(NSString *) simpleString :(NSMutableArray *) pointerToArray; 

simpleString 간단 PARAM이고, pointerToArray 배열 포인터이고; 이처럼

+0

모든 개체 변수는 이미 포인터입니다. 당신의 방법으로 정확히 무엇을하고 싶습니까? –

답변

1

: 예를 들어

*pointerToArray = [NSMutableArray array]; 
+1

'NSMutableArray *'는 이미 포인터입니다. 'NSMutableArray **'는 array =에 대한 포인터에 대한 포인터입니다. – Nekto

+0

흠, 그건 사실입니다. 글쎄. 나는 OP의 질문을 이해하는지 모르겠다. 아직도 확실하지 않습니다! : P –

+2

제 생각에 그는 NSString *이 이미 포인터라는 것을 이해하지 못합니다. – Nekto

1

:

-(void) dosomething:(NSString *) simpleString :(NSMutableArray **) pointerToArray; 

(당신의 방법에서 매개 변수 유형

에 두 번째를 '*'추가, 당신은 무언가 같이 할

NSString *localSimpleString; 
NSMutableArray *localArray; 
[self dosomething:localSimpleString :pointerToArray]; 
+0

왜 이것을 다운 그레이드 했습니까? 그 해답은 나에게 유효 해 보인다. –

4

있음 Objective-C, 문자열 및 배열은 모두 클래스입니다. 보시다시피 이미 포인터를 통해 액세스하고 있습니다. 그래서 선언이 말하는 것처럼 단순히 그들을 사용

-(void) dosomething:(NSString *) simpleString :(NSMutableArray *) pointerToArray; 

그리고 당신처럼 호출 :

NSString *s = @"Hello, world"; 
NSMutableArray *a = [NSMutableArray arrayWithObjects: @"Hello", @"silly", @"example", nil]; 

[yourClass dosomething:s :a]; 

FWIW, 당신의 방법의 이름은 dosomething::입니다. 각 매개 변수를 나타내는 것이 관례이다, 그래서 그것을 부를 것이다 :

-(void) doSomethingWithString:(NSString *)greeting array:(NSMutableArray *)strings; 

다음 이름이 훨씬 더 읽기, IMO입니다 doSomethingWithString:array:이다. 은 다음과 같이 호출합니다.

[yourClass doSomethingWithString:s array:a];