2012-07-02 2 views
1

내 코드에서 무슨 일이 일어나고 있는지 이해할 수 없다 않을 것으로 예상 크기 :배열 값이

for (NSMutableDictionary *dict in jsonResponse) { 


    NSString *days = [dict objectForKey:@"dayOfTheWeek"]; 

    NSArray *arrayDays = [days componentsSeparatedByString:@" "]; 

    NSLog(@"la var %@ size %lu", days, sizeof(arrayDays)); 


    for(int i = 0; i<sizeof(arrayDays); i++){ 

     NSLog(@"el dia %@",[arrayDays objectAtIndex:i]); 

    } 
} 

내가 로그에 얻을 :

2012-07-02 10:06:57.191 usualBike[1342:f803] var M T W T F size 4 
2012-07-02 10:06:57.191 usualBike[1342:f803] day M 
2012-07-02 10:06:57.192 usualBike[1342:f803] day T 
2012-07-02 10:06:57.192 usualBike[1342:f803] day W 
2012-07-02 10:06:57.193 usualBike[1342:f803] day T 
2012-07-02 10:06:57.193 usualBike[1342:f803] var S S size 4 
2012-07-02 10:06:57.194 usualBike[1342:f803] day S 
2012-07-02 10:06:57.194 usualBike[1342:f803] day S 

그리고 충돌 위치 (3)하지 않기 때문에 있다.

크기가 두 번째로 변경되지 않는 이유는 무엇입니까? 그것은

1. 사전

답변

1

sizeof(theArray)은 데이터 유형의 크기를 계산합니다 (Wikipedia 참조).
[theArray count]theArray.Count은 배열의 객체 수를 반환합니다.

두 경우 모두 sizeof(arrayDays)arrayDays.Count으로 바꿉니다.

참고 : 또한 루프 배열 사용하여 다음을 수행 할 수 있습니다

for (NSString* theValue in arrayDays) { 
    NSLog(@"el dia %@",theValue); 
} 
1

당신은 sizeof 연산자를 사용하지 않아야에 감사해야합니다. 문자열, 사전, 배열 등과 같은 포인터 유형 변수에 대해 수정 된 포인터 크기를 반환합니다.

NSArray의 속성을 계산해야합니다. 코드의 라인 아래

변경이 줄을

NSLog(@"la var %@ size %lu", days, sizeof(arrayDays)); 

:

NSLog(@"la var %@ size %lu", days, arrayDays.count); 

는 루프 문에서 동일한 작업을 수행.

1

Sizeof()[arrayDays count]

.use 고정 된 크기 배열에 대한 작동합니다
관련 문제