필자는 프로그램에서 정수형 2 차원 배열을 필요로하지만, 그것을 ivar로 선언하고 @ property/@ synthesize를 사용하려고해도 컴파일러 불만이나 다른 것을 얻을 수 있습니다.C 타입 어레이를 아이어로 사용하는 방법은 무엇입니까?
가 나는 바르로
int spotLocations[10] [10]
을 선언합니다.
그다지 효과적이지만, @ property/@ synthesize 프로세스는 결코 소집되지 않습니다.
필자는 프로그램에서 정수형 2 차원 배열을 필요로하지만, 그것을 ivar로 선언하고 @ property/@ synthesize를 사용하려고해도 컴파일러 불만이나 다른 것을 얻을 수 있습니다.C 타입 어레이를 아이어로 사용하는 방법은 무엇입니까?
가 나는 바르로
int spotLocations[10] [10]
을 선언합니다.
그다지 효과적이지만, @ property/@ synthesize 프로세스는 결코 소집되지 않습니다.
수행 할 수 없습니다. C에서 변수 variabless는 절대로 배열을 반환 할 함수를 선언 할 수 없다는 것을 의미합니다. 배열 변수에 함수 결과를 할당 할 수 없으므로 (lvalue가 될 수 없기 때문입니다).
속성은 형식을 반환하는 함수를 선언하는 간단한 방법 일뿐입니다. 함수는 결코 배열을 반환 할 수 없기 때문에 결코 배열 인 프로퍼티를 선언 할 수 없습니다. 에 액세스 물론
@property matrix spotLocations;
...
typedef struct {
int value[10][10];
} matrix;
: 당신이 절대적으로 같은 행렬을 주변에 이동해야하는 경우
, 당신은 lvalues 할 수있는 구조체에 포장 할 수 위치가 조금 복잡하면 사용할 수 있습니다.
spotLocations.value[x][y]
인스턴스 변수를 다음과 같이 선언하십시오. 포인터를 만든 다음 init 메서드에서 동적으로 배열을 만듭니다. @property 선언에 assign 매개 변수를 사용하십시오.
할당 :
spotLocations = malloc(100 * sizeof(int));
액세스 수행하여 열과 행 :
int aValue = spotLocations[x + y * 10];
은 무료로 기억() 당신이 그것으로 완료 포인터.
당신이 말하는 프로그래밍 언어를 지정해야한다고 생각합니다. – unwind
분명히 Objective-C – Rudedog
Objective-C에 익숙한 사람에게만 Objective-C가 분명히 나와 있습니다. –