2009-08-15 5 views
0

런타임시 매개 변수의 값을 변경하고 Obj-C에서 어떻게 작동하는지 궁금합니다.Objective-C 런타임시 메서드에 대한 매개 변수 수정

나는 'n'의 값이 각 루프마다 1 씩 증가하는 루프를 가지고 있습니다. n가 이동할 때 전달 된 매개 변수를 1 씩 증가시킵니다.

UIViewSubclass *uiViewSubclass = [[UIViewSubclass alloc] initWithValue:([value integerValue]) 
                andPlacement:kPlacement0; 
내가 읽을 수있는 2 인자를하고 싶습니다 루프를

다음과 같은 : andPlacement : kPlacement1; 다음 : 및 게재 위치 : kPlacement2; 및에 ...

나는 kPlacement를 문자열로 만들고 stringByAppendingString을 만듭니다. [[NSNumber numberWithInt : n] stringValue]; ?

Obj-C/Cocoa 접근 방식은 무엇입니까?

답변

3

런타임에 소스 코드를 수정하거나 변수 참조를 구성 할 수 없습니다. 목표 -C는 이 아니며 동적 인입니다.

kPlacementMax을 통해 kPlacement0의 값이 순차적 인 경우에, 당신이 직접 단계별하는 for 루프를 사용할 수 있습니다 :

for (MyPlacement placement = kPlacement0; placement += kPlacementIncrement; placement <= kPlacementMax) { 
    UIViewSubclass *instanceOfUIViewSubclass = [[UIViewSubclass alloc] initWithValue:([value integerValue]) 
                     andPlacement:placement]; 
    //Do something with instanceOfUIViewSubclass. 
    [instanceOfUIViewSubclass release]; 
} 

(당신은 kPlacement0에 추가 kPlacementIncrementkPlacementMax를 정의해야합니다 등등. kPlacement0 상수가 해당하는 열거 유형의 이름으로 MyPlacement을 사용하고 있습니다.)

순차적이지 않은 경우 C 배열에 넣고 iter

enum { numPlacements = <#Insert the number of placement constants here#> }; 
MyPlacement placements[numPlacements] = { 
    kPlacement0, 
    kPlacement1, 
    kPlacement2, 
    ⋮ 
} 

for (unsigned i = 0U; i < numPlacements; ++i) { 
    UIViewSubclass *instanceOfUIViewSubclass = [[UIViewSubclass alloc] initWithValue:([value integerValue]) 
                     andPlacement:placements[i]]; 
    //Do something with instanceOfUIViewSubclass. 
    [instanceOfUIViewSubclass release]; 
} 

당신은 아마 당신이 숫자들을 참조 할 때, 그렇게 kPlacement0 등보다-설명하는 이름을 가지고 올 수 있습니다 : 해당 배열에 먹었다 이름으로 그들을 참조하고 싶을 때, 그들에게 좋은 이름을주십시오.

+2

좀더 명확하게하기 :'suchandsuch1','suchandsuch2' 등의 변수를 가지고 싶을 때마다 배열을 사용해야 할 것입니다. – Chuck

관련 문제