2010-01-30 8 views
2

나는 objective-c가 어떻게 작동 하는지를 이해하는 간단한 프로그램을 작성했습니다. 이 프로그램은 i-ching으로, 6 줄의 응답을 기반으로 한 고대 점들, 6 번 동전 세 개를 실행 한 후 계산 된 후 hexagram을 작성합니다.아주 기본적인 objective-c 질문

나는 이것에 붙어있어, 나는 확실히 간단한 해결책이있다. 이것은 내가 어떻게 선들을 정의했는지, 나는 그것이 최고의 디자인이 아니라는 것을 알고 있지만 가능한 한 많은 기술을 사용하려고 노력하고있다. 동전을 발사한다고 가정하면 측면에 따라 3 또는 2가 될 수 있으며, 3 개의 동전은 가능한 값 6,7,8,9가됩니다.

/** 
    * identifying a coin 
    */ 
typedef enum { 
    head=3, 
    tail=2 
} Coin; 

/** 
    identify a line, three coins with a side value of 
    2 and 3 can result in 6,7,8,9 
    */ 
typedef enum { 
    yinMutable=tail+tail+tail, // 6 --> 7 
    yang=tail+tail+head, // 7 
    yin=head+head+tail, // 8 
    yangMutable=head+head+head // 9 --> 8 
} Line; 

/** 
    The structure of hexagram from bottom "start" to top "end" 
    */ 
typedef struct { 
    Line start; 
    Line officer; 
    Line transit; 
    Line minister; 
    Line lord; 
    Line end; 
} Hexagram; 

나는이 디자인으로 발생하는 첫 번째 문제는 hexagram의 각 행에 값을 할당하는 것입니다. 첫 번째 출시는 시작에서 가치를 채워야하고, 두 번째는 임원에서부터 시작해야합니다 .... 등등. 하지만 스위치 케이스로 쉽게 해결할 수 있습니다 ... 나는 그것을 좋아하지 않습니다.

1) 첫 번째 질문 : javacript 또는 C# 같은foreach (Hexagram의 속성) 같은 일부 기능이 있는지 궁금해. 내 문제를 해결할 수있는 선언 순서로 속성을 탐색 할 수 있습니다.

2) 두 번째 질문 : 라인의 배열을 사용하는 다른 방법으로 :

Controller.m 
.... 
Line response[6] 
.... 

-(id) buildHexagram:... { 

for(i =0.....,i++)..... 
    response[i]=throwCoins; 

// I omit alloc view and the rest of the code...then 
[myview buildSubview:response]; 
} 


---------------------- 
subView.m 


-(id) buildSubView:(Line[]) reponse { 

NSLog(@"response[0]=%o",[response objectAtIndex[0]]); <--- HERE I GOT THE ERROR 
} 

을하지만, 나는 그래서 분명히 배열 objective-에서 작동하는 방법 내가 오해하고 오류 EXC_BAD_ACCESS 있어이 솔루션을 오순절 C 또는 C! 내가 충분히 자신을 분명하게 만들었 으면 좋겠어. 누군가가 첫 번째 질문에 대한 해결책을 지적하고 두 번째 옵션에서 내가 잘못하고있는 것을 지적 할 수있을 것이다. 당신은 C 스타일 배열 접근을 사용하는 데 필요한 요소에 액세스 할 수 -

감사 레오나르도

답변

3

당신은 라인의 C 배열을 만들었습니다.

그래서 대신

[response objectAtIndex[0]] 

사용

response[0] 
+0

안녕 ... 일했다, 그러나 나는 다른 기본적인 질문이 하나 있습니다. 받는 방법에서 과제를 수행하고 싶습니다. Line therespone [6]; <- 클래스 변수 - (id) buildSubView : (Line []) 응답 { theresponse = response; <-이 잘못된 빌드 할당 오류 발생 ... } 하지만 컴파일러가 "양립 할 수없는 형식의 할당"으로 불만을 토로 할 수는 없습니다. – Leonardo

관련 문제