Deinit method is never called - Swift playground












19















In the next code I'm trying to call the deinit method releasing all the references to the Person Class instance Mark but the deinit is never called. Why?



class Person{

let name:String

init(name:String){
self.name = name
println("Person created")
}

deinit {

println("Person (name) deinit")
}
}

var Mark:Person? = Person(name:"Mark")
Mark = nil // Shouldn't the person deinit method be called here? It doesn't.









share|improve this question























  • deinit is Calling for the same code .

    – Yatheesha B L
    Jun 23 '14 at 10:30











  • Probably that's a playgrounds issue, I left playgrounds tests for more stable Xcode release. You can check the code good-old-way, deinit is properly called.

    – A-Live
    Jun 23 '14 at 10:31











  • Can not test ARC with playground !

    – Forrest
    Aug 4 '14 at 8:22











  • In XCode 10 deinit is called !

    – touti
    Jan 2 at 15:48
















19















In the next code I'm trying to call the deinit method releasing all the references to the Person Class instance Mark but the deinit is never called. Why?



class Person{

let name:String

init(name:String){
self.name = name
println("Person created")
}

deinit {

println("Person (name) deinit")
}
}

var Mark:Person? = Person(name:"Mark")
Mark = nil // Shouldn't the person deinit method be called here? It doesn't.









share|improve this question























  • deinit is Calling for the same code .

    – Yatheesha B L
    Jun 23 '14 at 10:30











  • Probably that's a playgrounds issue, I left playgrounds tests for more stable Xcode release. You can check the code good-old-way, deinit is properly called.

    – A-Live
    Jun 23 '14 at 10:31











  • Can not test ARC with playground !

    – Forrest
    Aug 4 '14 at 8:22











  • In XCode 10 deinit is called !

    – touti
    Jan 2 at 15:48














19












19








19


1






In the next code I'm trying to call the deinit method releasing all the references to the Person Class instance Mark but the deinit is never called. Why?



class Person{

let name:String

init(name:String){
self.name = name
println("Person created")
}

deinit {

println("Person (name) deinit")
}
}

var Mark:Person? = Person(name:"Mark")
Mark = nil // Shouldn't the person deinit method be called here? It doesn't.









share|improve this question














In the next code I'm trying to call the deinit method releasing all the references to the Person Class instance Mark but the deinit is never called. Why?



class Person{

let name:String

init(name:String){
self.name = name
println("Person created")
}

deinit {

println("Person (name) deinit")
}
}

var Mark:Person? = Person(name:"Mark")
Mark = nil // Shouldn't the person deinit method be called here? It doesn't.






swift






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jun 23 '14 at 10:13









MatterGoalMatterGoal

6,2311680157




6,2311680157













  • deinit is Calling for the same code .

    – Yatheesha B L
    Jun 23 '14 at 10:30











  • Probably that's a playgrounds issue, I left playgrounds tests for more stable Xcode release. You can check the code good-old-way, deinit is properly called.

    – A-Live
    Jun 23 '14 at 10:31











  • Can not test ARC with playground !

    – Forrest
    Aug 4 '14 at 8:22











  • In XCode 10 deinit is called !

    – touti
    Jan 2 at 15:48



















  • deinit is Calling for the same code .

    – Yatheesha B L
    Jun 23 '14 at 10:30











  • Probably that's a playgrounds issue, I left playgrounds tests for more stable Xcode release. You can check the code good-old-way, deinit is properly called.

    – A-Live
    Jun 23 '14 at 10:31











  • Can not test ARC with playground !

    – Forrest
    Aug 4 '14 at 8:22











  • In XCode 10 deinit is called !

    – touti
    Jan 2 at 15:48

















deinit is Calling for the same code .

– Yatheesha B L
Jun 23 '14 at 10:30





deinit is Calling for the same code .

– Yatheesha B L
Jun 23 '14 at 10:30













Probably that's a playgrounds issue, I left playgrounds tests for more stable Xcode release. You can check the code good-old-way, deinit is properly called.

– A-Live
Jun 23 '14 at 10:31





Probably that's a playgrounds issue, I left playgrounds tests for more stable Xcode release. You can check the code good-old-way, deinit is properly called.

– A-Live
Jun 23 '14 at 10:31













Can not test ARC with playground !

– Forrest
Aug 4 '14 at 8:22





Can not test ARC with playground !

– Forrest
Aug 4 '14 at 8:22













In XCode 10 deinit is called !

– touti
Jan 2 at 15:48





In XCode 10 deinit is called !

– touti
Jan 2 at 15:48












2 Answers
2






active

oldest

votes


















23














Xcode's Playgrounds for Swift don't work like regular apps; they aren't being run just once. The objects created stay in memory and can be inspected until you change the code, at which point the whole playground is reevaluated. When this happens, all previous results are discarded and while all object will be deallocated, you won't see any output from that.



Your code is correct, but Playgrounds is not suited to test things related to memory management.



Here's a related SO question: Memory leaks in the swift playground / deinit{} not called consistently






share|improve this answer

































    2














    Deinit will called if create object like this



    _ = Person(name:"Mark")





    share|improve this answer























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f24363384%2fdeinit-method-is-never-called-swift-playground%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      23














      Xcode's Playgrounds for Swift don't work like regular apps; they aren't being run just once. The objects created stay in memory and can be inspected until you change the code, at which point the whole playground is reevaluated. When this happens, all previous results are discarded and while all object will be deallocated, you won't see any output from that.



      Your code is correct, but Playgrounds is not suited to test things related to memory management.



      Here's a related SO question: Memory leaks in the swift playground / deinit{} not called consistently






      share|improve this answer






























        23














        Xcode's Playgrounds for Swift don't work like regular apps; they aren't being run just once. The objects created stay in memory and can be inspected until you change the code, at which point the whole playground is reevaluated. When this happens, all previous results are discarded and while all object will be deallocated, you won't see any output from that.



        Your code is correct, but Playgrounds is not suited to test things related to memory management.



        Here's a related SO question: Memory leaks in the swift playground / deinit{} not called consistently






        share|improve this answer




























          23












          23








          23







          Xcode's Playgrounds for Swift don't work like regular apps; they aren't being run just once. The objects created stay in memory and can be inspected until you change the code, at which point the whole playground is reevaluated. When this happens, all previous results are discarded and while all object will be deallocated, you won't see any output from that.



          Your code is correct, but Playgrounds is not suited to test things related to memory management.



          Here's a related SO question: Memory leaks in the swift playground / deinit{} not called consistently






          share|improve this answer















          Xcode's Playgrounds for Swift don't work like regular apps; they aren't being run just once. The objects created stay in memory and can be inspected until you change the code, at which point the whole playground is reevaluated. When this happens, all previous results are discarded and while all object will be deallocated, you won't see any output from that.



          Your code is correct, but Playgrounds is not suited to test things related to memory management.



          Here's a related SO question: Memory leaks in the swift playground / deinit{} not called consistently







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited May 23 '17 at 12:02









          Community

          11




          11










          answered Jun 23 '14 at 10:32









          Andreas LeyAndreas Ley

          8,08813453




          8,08813453

























              2














              Deinit will called if create object like this



              _ = Person(name:"Mark")





              share|improve this answer




























                2














                Deinit will called if create object like this



                _ = Person(name:"Mark")





                share|improve this answer


























                  2












                  2








                  2







                  Deinit will called if create object like this



                  _ = Person(name:"Mark")





                  share|improve this answer













                  Deinit will called if create object like this



                  _ = Person(name:"Mark")






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jan 30 '18 at 4:52









                  Pardeep BishnoiPardeep Bishnoi

                  1217




                  1217






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f24363384%2fdeinit-method-is-never-called-swift-playground%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      MongoDB - Not Authorized To Execute Command

                      How to fix TextFormField cause rebuild widget in Flutter

                      in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith