Deinit method is never called - Swift playground
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
add a comment |
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
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
add a comment |
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
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
swift
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
add a comment |
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
add a comment |
2 Answers
2
active
oldest
votes
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
add a comment |
Deinit will called if create object like this
_ = Person(name:"Mark")
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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
add a comment |
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
add a comment |
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
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
edited May 23 '17 at 12:02
Community♦
11
11
answered Jun 23 '14 at 10:32


Andreas LeyAndreas Ley
8,08813453
8,08813453
add a comment |
add a comment |
Deinit will called if create object like this
_ = Person(name:"Mark")
add a comment |
Deinit will called if create object like this
_ = Person(name:"Mark")
add a comment |
Deinit will called if create object like this
_ = Person(name:"Mark")
Deinit will called if create object like this
_ = Person(name:"Mark")
answered Jan 30 '18 at 4:52


Pardeep BishnoiPardeep Bishnoi
1217
1217
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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