2011-08-25 11 views
7

पर एआरसी के साथ एनएसविंडो को प्रोग्रामेटिक रूप से बनाएं और खोलें I nib के बिना एक नया NSWindow आवंटित करने और खोलने का तरीका नहीं पता।शेर 10.7

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

आप कम से कम अपवॉट्स के साथ उत्तर को क्यों लागू करना चुनेंगे? – Intentss

+0

मैंने सभी तरीकों की कोशिश की, यह जवाब सही imho लगता है :( – kilianc

+1

एआरसी से कनेक्शन क्या है? –

उत्तर

15

से लिया जाता है, तो जब तक आप खिड़की के लिए एक मजबूत संदर्भ है, यह पिछले बयान यह संदर्भ के तुरंत बाद जारी किया जाएगा ।

एआरसी एक रखरखाव/रिलीज मॉडल से स्वामित्व मॉडल तक वस्तुओं के बारे में सोचने के तरीके को बदलता है। अगर आपके window वैरिएबल का स्वामित्व नहीं है, तो यह दूर जाएगा।

खिड़की के स्वामित्व लेने के कई तरीके हैं। आप विंडो को strong कीवर्ड का उपयोग करके एक आवृत्ति चर या अपनी कक्षा में एक संपत्ति के रूप में सेट कर सकते हैं, या जब आप अपने कोड में चर घोषित करते हैं तो आप __strong क्वालीफायर का उपयोग कर सकते हैं।

LLVM compiler site पर एआरसी के बारे में बहुत अधिक जानकारी है।

+1

__strong क्वालीफायर ने समस्या का समाधान नहीं किया, उदाहरण चर वैरिएबल किया, ty – kilianc

+2

'__strong' काम नहीं करने का कारण यह है कि कोड (संभवतः एक विधि) गुंजाइश से बाहर हो गया है, और इसके साथ ही उन सभी स्थानीय चर भी – bshirley

संबंधित मुद्दे