코코아 - NSBundle을 사용 하여이 코드의 문제
문제
이 코드 라인을 사용하여 리소스 폴더/프로젝트 번들의 이미지를 호출하는 것이 좋습니다. 또한 많은 다른 웹 사이트 자습서에서 이와 같이 사용되는 것을 볼 수 있습니다.
NSBundle *mb=[NSBundle mainBundle];
NSString *fp=[mb pathForResource:@"topimage" ofType:@"PNG"];
NSImage *image=[NSImage initWithContentsOfFile:fp];
그러나 다음 경고를 받고 있습니다.
nsimage는 +initwithContentsOffile +에 응답하지 않을 수 있습니다
NSIMAGE에 대한 문서는 InitWithContentsOffile이 실제로 작동 해야하는 방법임을 보여줍니다. 여기서 무엇이 빠질 수 있습니까?
해결책
당신은 누락되었습니다 +alloc
NSImage* image = [[NSImage alloc] initWithContentsOfFile:fp];
당신은 또한 사용할 수 있습니다 +imageNamed:
, 메인 번들에서 이미지를 가져옵니다.
NSImage* image = [NSImage imageNamed:@"topImage.png"];
다른 팁
initWithContentsOfFile:
인스턴스 방법이지만 해당 메시지를 NSIMAGE 클래스로 보내고 있습니다. 인스턴스로 보내야합니다. 특히 신선하게 할당 된 인스턴스.
그게 어디에 있습니다 alloc
인스턴스를 할당하는 클래스 방법입니다. init…
메시지 (대런이 보여준 것처럼).
완료되면 인스턴스를 해제하는 것을 잊지 마십시오. 나는 일반적으로 인스턴스를 입력 한 직후에 인스턴스를 자극한다. 그런 다음 Cocoa는 적절한 시간에 인스턴스를 출시합니다. 참조 코코아를위한 메모리 관리 프로그래밍 안내서 자세한 내용은.
제휴하지 않습니다 StackOverflow