문제

이미지를로드 할 수는 없지만 내가 지정한 경로에 있다고 확신합니다.

이미지를로드하려는 코드는 다음과 같습니다.

- (UIImage*) CPPlistImageToUIImage: (NSString *) CPPlistImage {
    /*TODO: Is this a memory leak? Find out*/
    UIImage * ret = [UIImage imageNamed: CPPlistImage];
    if(ret == nil){
        RDLogString(@"Warning: Failed to load image: \"%@\"", CPPlistImage);
    }

    return ret;
}

다음은이 기능이 보이는 디렉토리에 모든 파일을 나열하는 기능입니다.

- (void) lsOwnDirectory {
    NSError * error = [[NSError alloc] init];
    NSArray * files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: pathToOwnDirectory error: &error];

    for(NSString * file in files){
        RDLogString(@"%@", file);
    }
}

다음은 동일한 실행에서 두 기능의 출력 샘플입니다.

// CPPlist...Image telling he can't find/load the image
2009-11-29 02:12:51.510 CPPlayer[6452:207] CPConversation.m:113 Warning: Failed to load image: "/Users/nick/Library/Application Support/iPhone Simulator/User/Applications/D3403591-3A56-4F05-B4C1-C21DAAF918A2/CPPlayer.app/CP.Resources/CP.Conversations/Supermarkt/OIGNONS.png"
...
// lsOwnDirectory is called AFTER CPPList...Image
2009-11-29 02:12:51.557 CPPlayer[6452:207] RootViewController.m:81 Contents of /Users/nick/Library/Application Support/iPhone Simulator/User/Applications/D3403591-3A56-4F05-B4C1-C21DAAF918A2/CPPlayer.app/CP.Resources/CP.Conversations/Supermarkt
2009-11-29 02:12:51.566 CPPlayer[6452:207] CPConversation.m:133 audio
2009-11-29 02:12:51.567 CPPlayer[6452:207] CPConversation.m:133 CPConversation.plist
2009-11-29 02:12:51.568 CPPlayer[6452:207] CPConversation.m:133 CPData.sqlite
2009-11-29 02:12:51.569 CPPlayer[6452:207] CPConversation.m:133 images
2009-11-29 02:12:51.570 CPPlayer[6452:207] CPConversation.m:133 OIGNONS.png

파일을 찾을 수없는 이유는 없습니다. 한 기능은 그것을보고, 다른 기능은 그렇지 않으며, 같은 디렉토리에서 보이는 것 같습니다 ...

큰 도움이되는 모든 도움,

미리 감사드립니다, Nick

편집 : 코드가 iPhone OS 3.0 용 Xcode에 의해 코드가 실행되고 컴파일된다는 것을 잊어 버렸습니다. 당신은 아마도 태그에서 그것을 얻었지만 여전히.

도움이 되었습니까?

해결책

-[UIImage imageNamed:] 이미지 파일의 전체 경로를 허용하지 않습니다. 파일 이름 만 허용 한 다음 응용 프로그램의 기본 번들에 해당 파일 이름이있는 이미지를 찾습니다. 그것이 그것이 반환되는 이유입니다. -[UIImage imageWithContentsOfFile:], 반면에 파일에 대한 전체 또는 부분 경로가 기대됩니다. 두 생성자의 주요 차이점은 ImageNamed입니다. 이미지를 내부적으로 캐시합니다 (UIIMAGE와 관련된 개인 캐시로) IMAGE는 이미지를 캐시하지 않습니다.

사이드 노트 : 아니요, 메모리 누출이 아닙니다. Cocoa에 대한 메모리 관리 규칙에 따라 다른 곳에서 명시 적으로 유지하지 않는 한 소유권을 갖지 않는 자동 입력 객체를 반환 해야하는 편의 생성자를 사용하고 있습니다.

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