문제

나는 함께 놀고있는 작은 기초 도구 테스트 (Objective-C)를 가지고 있으며 몇 가지 질문이 있습니다 ...

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    int planetLoop;
    NSString *tempString;
    NSMutableArray *planetArray = [[NSMutableArray alloc] init];

    NSLog(@"STRING ARRAY ... Start");
    for(planetLoop=0; planetLoop<10; planetLoop++) {
        tempString = [NSString stringWithFormat: @"Planet_%03d", planetLoop+1];
        NSLog(@"Planet_%03d", planetLoop+1);
        [planetArray addObject:tempString];
    }

    [planetArray release];
    [pool drain];
    return 0;
}

첫째, 일반적으로 배열에 추가 한 후 객체를 해제하지만 "Tempstring"이 문자열이므로 할당되거나 해제 될 필요가 없기 때문에 현재 내가 가진 것이 옳다고 생각하는 것이 옳습니다.

둘째,이 실행 (실행 전)을 실행할 때 다음과 같은 EROR를 얻을 수 있습니다. Google에서 검색하면 Xcode 3.1.2의 버그 인 것 같습니다. 누구나 아이디어가 있습니까?

마지막으로 내가 잘못하고있는 모든 일은 "Planet_010"까지 10 문자열 "Planet_001"으로 배열을 채우는 것입니다.

편집 : 아, 알겠습니다. "= [nsstring"비트 IE 때문입니다.

// Autoreleased object
tempString = [NSString stringWithFormat: @"Planet_%03d", planetLoop+1];
// String literal
tempString = @"Planet_"; 

많은 감사, 대단히 감사합니다 -

도움이 되었습니까?

해결책

tempString 실제로 문자열 문자가 아닙니다. @"Planet_%03d" ~이다 문자열 문자. tempString 자가 eLeased 객체는 nsautoreleasepool이 배수 될 때 해제 될 것임을 의미합니다. 기본적으로 메모리는 이미 관리되었으며 아무것도 할 필요가 없습니다.

규칙은 다음과 같습니다. 만약 너라면 new, alloc, copy 또는 retain 물체, 그러면 당신은해야합니다 release 그것. 그렇지 않으면 메모리는 아마도 자동 제출에 의해 이미 관리됩니다.

또한, 당신은 석방을 잊었습니다 pool. 그 외에는 괜찮아 보입니다.

다른 팁

"알 수없는로드 명령을 읽을 수 없음 0x80000022"오류의 한 가지 가능한 이유는 개발자 도구를 동시에 업그레이드하지 않고 Snow Leopard로 업그레이드 한 것으로 보입니다. 10.5 버전을 Xcode로 사용하여 10.6 환경에서 컴파일하려고 시도하면 오류가 발생할 수 있습니다. 나는 내일 이것에 대해 조사 할 것이다.

Xcode 3.2는 이제 Snow Leopard (Mac OS X 10.6) 릴리스에서 사용할 수 있습니다. Snow Leopard를 설치 한 후 Xcode Tools 디스크 이미지와 별도로 설치하여 Xcode 3.2로 업그레이드하십시오. 이전 버전의 Xcode를 통해 설치하거나 설치하기 전에 따로 이동할 수 있습니다.

추신 : "알 수없는로드 명령 0x80000022를 읽을 수 없음"오류가 발생했을 때 Xcode 3.1.2로 OSX 10.6.1을 실행 중입니다.

건배 -기세 -

"로드 명령"오류는 실행 가능한 형식이 iPhone OS 3.0에서 iPhone OS 3.1로 변경 되었기 때문입니다.

http://networkpx.blogspot.com/2009/09/about-lcdyldinfoonly-command.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top