2014-06-10 12 views
75

स्विफ्ट में, मुझे लगता है कि @autoreleasepool{} निर्माण नहीं है, हालांकि स्विफ्ट एआरसी का उपयोग करता है। स्विफ्ट में एक ऑटोरेलीपूल का प्रबंधन करने का उचित तरीका क्या है, या इसे किसी कारण से हटा दिया गया है?स्विफ्ट में @autoreleasepool के बराबर क्या है?

+0

शायद यह अभी तक हमें जारी नहीं किया गया है (और ओबीजेसी पुल के साथ एक कस्टम एक लागू किया गया है) –

+0

इसके अलावा संबंधित और रुचि: "क्या स्विफ्ट प्रोग्राम में ऑटोरेलीपूल का उपयोग करना आवश्यक है?" http://stackoverflow.com/questions/25860942/is-it-necessary-to-use-autoreleasepool-in-a-swift-program?rq=1 –

उत्तर

116

यह WWDC 2014 session video संख्या 418 में विस्तार से समझाया गया है, जो आप भी एक पीडीएफ के रूप में डाउनलोड कर सकते हैं "उपकरण के साथ अपने एप्लिकेशन में सुधार"।

लेकिन संक्षेप में, वाक्य रचना है:

autoreleasepool({() ->() in 
    // code    
}) 

लगता कोष्ठकों की पहचान करता कार्यों बंद:

autoreleasepool { 
    /* code */ 
} 
+7

यह ध्यान रखना महत्वपूर्ण है कि '{' ** ** 'autoreleasepool 'के समान लाइन पर रहें, अन्यथा आपको इसे'()' में लपेटना होगा। वह * वास्तव में * मुझे ईमानदार होने के लिए परेशान करता है ... – Erik

+1

@SiLo वास्तव में? वह बेकार है। आपको एक बग रिपोर्ट दर्ज करनी चाहिए। –

+19

@AhihiBeckert @SiLo यह एक बग नहीं है। 'autorelease' एक ऐसा फ़ंक्शन है जो तर्क के रूप में बंद हो जाता है। यह शॉर्ट-हाथ बंद करने के रूप में-अंतिम-तर्क वाक्यविन्यास का एक उदाहरण है। –

7

वहाँ है! यह वास्तव में कहीं भी उल्लेख नहीं किया गया है।

autoreleasepool { 
    Do things.... 
} 
15

बस FYI करें, Xcode इस प्रकार पूर्ण कोड का निर्माण किया।

+3

यह सुनिश्चित नहीं है कि किसी ने भी इस टिप्पणी को क्यों वोट दिया है, क्योंकि वह यह इंगित कर रहा है कि स्विफ्ट 1.2 तक एक ऑटोरेलीज पूल को क्लोजर में लपेटने के लिए कोड की आवश्यकता होती है – bolnad

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