2009-11-02 2 views
0

이 코드 줄을 사용하여 리소스 폴더/프로젝트 번들에서 이미지를 호출하는 것이 좋습니다. 나는 또한 많은 다른 웹 사이트 튜토리얼에서 이와 같이 정확하게 사용되는 것을 본다.코코아 - NSBundle을 사용하는이 코드의 문제점

NSBundle *mb=[NSBundle mainBundle]; 


NSString *fp=[mb pathForResource:@"topimage" ofType:@"PNG"]; 


NSImage *image=[NSImage initWithContentsOfFile:fp]; 

그러나, 나는 다음과 같은 경고를 받고 오전 :

NSImage가 응답하지 않을 수 있습니다 + initWithContentsOfFile +

NSImage에 대한 문서는 initWithContentsOfFile가 작동해야하는 방법은 사실에 있음을 보여줍니다 . 여기서 내가 무엇을 놓칠 수 있겠습니까?

+0

매우 다른 두 가지 주제 인 "MAC"이 아닌 "Mac"입니다. –

답변

5
당신은 또한 당신의 주요 번들에서 이미지를 가져 오는 +imageNamed:을 사용할 수있는 +alloc

NSImage* image = [[NSImage alloc] initWithContentsOfFile:fp]; 

을 놓치고

.

NSImage* image = [NSImage imageNamed:@"topImage.png"]; 
+0

감사합니다. 문제는 정확히 무엇 이었습니까? – Brian

4

initWithContentsOfFile:은 인스턴스 메소드이지만 NSImage 클래스로 보내고 있습니다. 새로 할당 된 인스턴스에 인스턴스를 보내야합니다.

여기가 alloc입니다. 이는 인스턴스를 할당하는 클래스 메소드로, 다음은 즉시 init… 메시지를 보냅니다 (대런이 보여준대로).

인스턴스를 완료 한 후에 인스턴스를 릴리스해야합니다. 나는 일반적으로 인스턴스를 초기화 한 직후 인스턴스를 자동 갱신합니다. 그런 다음, 코코아는 적절한 시간에 인스턴스를 릴리스 할 것입니다. 자세한 내용은 Memory Management Programming Guide for Cocoa을 참조하십시오.