मैंने ऐप्पल से मेमोरी मैनेजमेंट गाइड पढ़ा है और मुझे नहीं पता कि यह मामला कहां समझाया गया है ...ऑब्जेक्टिव-सी वास्तव में क्या करता है जब आप ऑब्जेक्ट घोषित करते हैं?
कई बार, विशेष रूप से कक्षा के उदाहरण को वापस करने के लिए कक्षा विधि लिखते समय, मैं शुरू करूंगा यह इस तरह से बाहर है, क्योंकि मैंने इसे देखा है, और यह काम करता है।
[नोट] यह कोड स्मृति से है - मैं इसे अद्यतन कर दूंगा जब मैं एक उदाहरण दिखाने के लिए घर आता हूं जो वास्तव में काम करता है (मैंने इसे स्पष्ट करने के लिए इसे बनाया है, लेकिन स्पष्ट रूप से मुझे इसे बनाने के लिए पर्याप्त रूप से याद नहीं है । कुछ है कि समझ में आता है ...
[संपादित करें] यहाँ मेरी वास्तविक तरीका है - निश्चित रूप से हर किसी को सही है कि मैं alloc
जो मैं कर रहा हूँ बुला जाना चाहिए था
+ (id)player
{
Player *player = nil;
if ((player = [[[super alloc] initWithFile:@"rocket.png"] autorelease])) {
[player setProjectileType:kProjectileBullet];
[player setProjectileLevel:1];
[player setInvincible:YES];
[player setEmitter:[CCParticleSystemQuad particleWithFile:@"exhaust.plist"]];
[[player emitter] setPosition:ccp(0.0, player.contentSize.height/2)];
[player addChild:player.emitter];
}
return player;
}
तो क्या मैं प्रतिक्रियाओं से मिल गया है: * उदाहरण घोषित करने से मुझे एक मेमोरी लोकेशन में पॉइंटर मिल जाता है और एक्सकोड बताता है कि ऑब्जेक्ट कौन सा वर्ग होगा। * पॉइंटर को बहुत ज्यादा शून्य पर सेट करना बस इसे शून्य पर सेट करता है - इसे इसमें कचरा रखने से रोकता है (दाएं?) * चूंकि मैं उदाहरण को ऑटोरेलेज़ कर रहा हूं, इसलिए लौटाई गई ऑब्जेक्ट भी ऑटोरेलेज्ड है।
मुझे यह समझने में मदद करने के लिए धन्यवाद!
कहां से कुछ कहने के लिए वैचारिक रूप से समान है, आपने उपरोक्त "किया?" आपके द्वारा यहां सूचीबद्ध कोड समझ में नहीं आता है, और मैं इसे काम करने की उम्मीद नहीं करता। –
@Rob - ऊपर मेरा संपादन देखें; मैं आज रात वास्तविक कोड के साथ संपादित करूँगा। रोगी होने के लिए धन्यवाद। – Steve