2011-08-25 4 views
7

nib없이 새 NSWindow를 할당하고 여는 방법을 알 수 없습니다. 당신은 ARC를 사용하는 경우Lion 10.7에서 ARC를 사용하여 NSWindow를 프로그래밍 방식으로 만들고 엽니 다.

NSRect frame = NSMakeRect(100, 100, 200, 200); 
NSUInteger styleMask = NSBorderlessWindowMask; 
NSRect rect = [NSWindow contentRectForFrameRect:frame styleMask:styleMask]; 
NSWindow * window = [[NSWindow alloc] initWithContentRect:rect styleMask:styleMask backing: NSBackingStoreBuffered defer:false]; 
[window setBackgroundColor:[NSColor blueColor]]; 
[window makeKeyAndOrderFront: window]; 

위의 코드는 당신이 창에 대한 강한 참조가 않는 한, 그것은 그것을 참조하는 마지막 문 직후 발표 될 예정이다,이 스레드 How do I create a Cocoa window programmatically?

+1

왜 당신은 최소한의 upvotes로 대답을 함축하도록하겠습니까? – Intentss

+0

나는 모든 방법을 시도했는데,이 대답은 올바른 것 같다. ( – kilianc

+1

ARC와의 연결은 무엇입니까? –

답변

15

에서 가져옵니다 .

ARC는 보유/릴리스 모델에서 소유권 모델에 이르기까지 객체에 대해 생각할 필요가있는 방식을 변경합니다. 변수가 window 인 경우 아무것도 삭제되지 않습니다.

창의 소유권을 얻는 방법에는 여러 가지가 있습니다. 창을 인스턴스 변수 또는 strong 키워드를 사용하여 클래스의 속성으로 설정할 수도 있고 코드에 변수를 선언 할 때 __strong 한정자를 사용할 수도 있습니다.

LLVM compiler site에는 ARC에 대한 더 많은 정보가 있습니다.

+1

__strong 한정자가 문제를 해결하지 못했습니다. 인스턴스 변수가 성공했습니다. – kilianc

+2

'__strong'이 작동하지 않는 이유는 코드 (가능성이있는 메소드)가 범위를 벗어 났기 때문이며 그 모든 로컬 변수 – bshirley

관련 문제