2011-08-25 6 views
0

나는 내 질문에 관해서 구글과이 사이트를 검색해 보았지만 대답을 찾지 못했다.메서드에서 매개 변수를 사용하면 메서드의 함수에 대한 내용이 변경됩니까?

나는 Obj-C 초보자이며이 질문에 답변하고자합니다.

내 메서드에서 매개 변수를 사용하면 어떤 이점이 있습니다. (공극)에있어서 더 반환형이없는 것을 의미하고, - - 예

..

-(id)initWithName:(NSString *)newName atFrequency:(double)newFreq { 
self = [super init]; 
if (self != nil) { 
name = newName; 
frequency = newFrequency; 
} 
return self; 
} 

-(void)myMethod { 
self = [super init]; 
if (self != nil) { 
name = newName; 
frequency = newFrequency; 
} 
return self; 
} 

대 I는 그 이해 (ID)는 상기 제 1 방법을 의미 'id'가 반환 유형으로 사용되며 'id'는 일반 ...

아무도 설명 할 수 있습니까? 제 질문이 의미가 있기를 바랍니다. 모두 도와 줘서 고마워.

답변

0

매개 변수는 모든 언어의 함수/메소드 매개 변수와 마찬가지로 메소드에 대한 입력입니다. 귀하의 두 번째 예에서, frequency = newFrequency;의 경우 newFrequency은 어디에서 왔습니까? 당신이 등가의 Obj-C에서

void initWithName(string newName, double newFreq); 

같은 뭔가를 할 수있는 다른 언어에서

은의 Obj-C에서, 여분의 조각이 있다는 차이가

- (void)initWithName:(NSString *)newName atFrequency:(double)newFreq;

입니다 각 매개 변수의 메소드 이름 (atFrequency과 같음) -이 경우 메소드 이름은 initWithName:이 아닌 initWithName:atFrequency:입니다.

(이 실제로 선택 사항입니다, 당신은 각 매개 변수에 대한 :이 있어야 기술적 initWithName:: 여전히 유효한 방법 이름이지만, 그의 Obj-C의 좋은 습관을 고려 아니에요..)

항목 :

+0

이봐, 회신 jtbandes 주셔서 감사합니다 .. 하지만 내가 이해하려고하는 것은 매개 변수를 사용하면 이점이 있습니까? 메서드 이름에 매개 변수없이 똑같은 작업을 수행하는 메서드를 작성할 수 없습니까? – Instafal

+0

@Instafal 어떻게 그러한 입력 방법으로 입력을 전달합니까? – jtbandes

+0

난 그냥 알아 낸 것 같아요 ... 내 메서드에서 매개 변수를 사용할 때 내 메서드가 무엇을하는지 설명하는데 도움이됩니다 .. 반면 매개 변수를 사용하지 않으면 내 메서드가 반환됩니다. void, 나는 한 걸음 더 나아가 내 물건을 그 방법으로 보내야 해. 매개 변수와 함수가 'id'를 반환하면 "MyClass * object = [[MyClass alloc] initWith : parameter1 : parameter2];을 수행하여 자신의 단계를 저장할 수 있습니다. – Instafal

관련 문제