2009-09-03 10 views
5

मैं एक आवेदन शामिल करना चाहता हूंडिफिनिश लॉन्चिंग: मेरे कोको प्रतिनिधि में। यह मैं कैसे करूंगा?? आईफोन एसडीके पर एप्लिकेशनडिडफिनिश लॉन्चिंग पहले से ही प्रतिनिधि प्रतिनिधि में है, लेकिन मेरे मैक एप्लिकेशन को बनाने पर मैंने देखा कि कोई भी नहीं था।आवेदन प्रतिनिधि - कोको

शुभकामनाओं सहित,

केविन

उत्तर

6
- (id)init 
{ 
    if (self = super init]) { 
     [NSApp setDelegate:self]; 
    } 
    return self; 
} 

तुम भी इंटरफ़ेस बिल्डर में ऐसा कर सकते हैं; MainMenu.xib में "फ़ाइल के स्वामी" से, बस अपने ऑब्जेक्ट पर "प्रतिनिधि" आउटलेट खींचें। यद्यपि आप -awakeFromNib का उपयोग करने पर विचार करना चाहेंगे।

+2

आप 'चारों ओर सुपर init' एक कोण कोष्ठक याद कर रहे हैं और आपको लगता है कि विधि' applicationDidFinishLaunching उल्लेख नहीं है: 'ssame वर्ग द्वारा लागू किया जाना चाहिए यह काम करने के लिए। – MKroehnert

20

एक्सकोड 3.2 के रूप में, मैक एप्लिकेशन टेम्पलेट भी एक एप्लिकेशन प्रतिनिधि के साथ आता है, जो पहले से जुड़ा हुआ है, जिसमें ऐसी विधि है।

एक्सकोड 3.2 से पहले बनाई गई परियोजना में इसे स्थापित करने के लिए, अपने प्रतिनिधि के लिए एक नई कक्षा बनाएं। मैं आमतौर पर मेरा "AppDelegate" नाम देता हूं। आप कक्षा समूह पर राइट-क्लिक करके और "फ़ाइल जोड़ें" चुनकर, कोको एनएसओब्जेक्ट सबक्लास फ़ाइल टेम्पलेट चुनकर ऐसा करेंगे।

आपके द्वारा अभी बनाए गए शीर्षलेख को खोलें (AppDelegate.h)। इसे किसी भी आवृत्ति चर दें जो आप चाहते हैं। फिर काउंटरपार्ट पर जाएं। यह आपको कार्यान्वयन फ़ाइल (AppDelegate.m) पर ले जाता है। यहां अपनी applicationDidFinishLaunching: इंस्टेंस विधि जोड़ें। आईफोन के विपरीत, यह एक अधिसूचना-हैंडलर विधि है, इसलिए यह एनएसएनोटिफिकेशन इंस्टेंस लेता है, न कि एनएसएप्लिकेशन इंस्टेंस।

अब इसे हुक करने के लिए। संसाधन समूह में, MainMenu.nib खोलें। लाइब्रेरी विंडो से ऑब्जेक्ट को शीर्ष-स्तरीय निब विंडो में खींचें (इसमें आइकन वाले आइकन, जैसे फ़ाइल के स्वामी और फर्स्ट रेस्पॉन्डर)। उस वस्तु का चयन करें जिसे आपने अभी बनाया है और पहचान निरीक्षक खोलें। ऑब्जेक्ट की कक्षा को AppDelegate पर सेट करें, जो आपने एक्सकोड में उपयोग किए गए नाम से मेल खाता है। फ़ाइल के मालिक पर राइट-क्लिक करें, और अपनी नई ऑब्जेक्ट पर delegate आउटलेट से खींचें।

एक्सकोड में, अपने applicationDidFinishLaunching: विधि में एक NSLog कथन जोड़ें। सभी को हिट करें, फिर बिल्ड करें और जाएं। एक्सकोड पर वापस स्विच करें और डीबगर कंसोल खोलें। अगर आपने सब कुछ सही किया और मैंने कुछ भी नहीं भूल लिया, तो आपको वहां लॉग संदेश देखना चाहिए।

+0

'मैक एप्लिकेशन टेम्पलेट भी एक एप्लिकेशन प्रतिनिधि के साथ आता है, जो पहले से जुड़ा हुआ है, जिसमें ऐसी विधि है। 'दस्तावेज़ आधारित ऐप्स के लिए नहीं ... – zakdances

+0

@yourfriendzak: अच्छा बिंदु। यदि आप किसी दस्तावेज़-आधारित ऐप (किसी कारण से) में कोई एप्लिकेशन प्रतिनिधि जोड़ना चाहते हैं, तो आपको शेष निर्देशों का पालन करना होगा। –

0

क्या आप एप्लिकेशन प्रतिनिधि फ़ाइलों को पूरी तरह याद कर रहे थे? ऐसा लगता है कि एक्सकोड स्थापना स्क्रिप्ट्स (कम से कम 3.2.1 के लिए हिम तेंदुए पर) में एक बग है जो गलत फ़ोल्डर में नवीनतम प्रोजेक्ट टेम्पलेट्स स्थापित करता है। "कोको एप्लिकेशन" प्रोजेक्ट के लिए पुराने टेम्पलेट में प्रतिनिधि फाइलें नहीं हैं।

मैंने समझाया है कि मैंने Fixing the Xcode Project Templates नामक ब्लॉग पोस्ट में जो खोजा है (और मैंने इसे कैसे "तय किया है)।

चीयर्स, ग्राहम