KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Possible Duplicate: Why do weak NSString properties not get released in iOS? I'm a newbie to Objective C and I've got some questions that I cannot answer myself. I have a block of code for testing __weak variable (I'm using ARC, of course): NSString *myString = [[NSString alloc] initWithFormat:@"John"]; NSString * __weak weakString = myString; myString = nil; //<-- release the NSString object NSLog(@"string: %@", weakString); The output of the above codes is as expected, since weakString is a weak variable : 2013-01-02 11:42:27.481 ConsoleApp[836:303] string: (null) But when I modified the code to this: NSString *myString = [[NSString alloc] initWithFormat:@"John"]; NSString * __weak weakString = myString; NSLog(@"Before: %@", weakString); //<--- output to see if the __weak variable really works. myString = nil; NSLog(@"After: %@", weakString); The output is totally not what I expected: 2013-01-02 11:46:03.790 ConsoleApp[863:303] Before: John 2013-01-02 11:46:03.792 ConsoleApp[863:303] After: John The output of the latter NSLog must have been (nil) instead of "John". I've tried to search in many documents but I haven't found the answer for this case. Can someone give an reasonable explaination? Thanks in advance.
Tags (comma-separated)
Save Edits
Cancel