uiimage가로드되지 않았지만 파일이 있습니다
-
06-07-2019 - |
문제
이미지를로드 할 수는 없지만 내가 지정한 경로에 있다고 확신합니다.
이미지를로드하려는 코드는 다음과 같습니다.
- (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에 대한 메모리 관리 규칙에 따라 다른 곳에서 명시 적으로 유지하지 않는 한 소유권을 갖지 않는 자동 입력 객체를 반환 해야하는 편의 생성자를 사용하고 있습니다.
제휴하지 않습니다 StackOverflow