Note that there are some explanatory texts on larger screens.

plurals
  1. POreleasing and retaining NSString* properly
    primarykey
    data
    text
    <p>Hi all i'm still new to iPhone development, but had strong experience with other programming languages. The thing that makes me pull my hair out is the Obj-C memmory management and releasing / retaining properly. I know the concept, i know "once i understand it will be easy" but i'm not quite still there, and that makes me crazy. Here i have one simple piece of code with class and method, that simply add's one character to existing string that is synthesized so used as class proprety ... the class for example is called myClass ... </p> <p>myClas.h</p> <pre><code>@interface myClass : NSObject { @private NSString* someCommonString; } @propery (retain, nonatomic) NSString* someCommonString; </code></pre> <p>myClass.m</p> <pre><code>... @synthesize someCommonString; - (id) init { self = [super init]; if(self) { someCommonString = [[NSString alloc] initWith String:@"one "]; } } - (NSString*) appendString:(NSString*) stringToAdd { NSString* result = [someCommonString stringByAppendingString: stringToAdd]; return result; } - (void) doTheJob { NSString* test1 = @"two "; NSString* test2 = [[NSString alloc] initWithString: @"three "]; NSString* test3 = [NSString stringWithFormat:@"four "]; self.someCommonString = [self appendString:test1]; self.someCommonString = [self appendString:test2]; self.someCommonString = [self appendString:test3]; NSLog(@"%@", someCommonString); } - (void) dealloc { [someCommonString release]; [super release]; } ... </code></pre> <p>Ok, after i alloc myClass and execute the doTheJob method, i should have @"one two three four" in the someCommonString class proprety. I know this is working, but is also leaking as hell. test1, test2 and test3 are 3 ways of initialising NSString, and only the test2 should be released, this is quite self-explanatory, but im much more worried what happens when passing them as arguments to the appendString method. Because there i know i hawe a leak, but don't know how to handle 1. stringToAdd argument [should i worry about it in appendString method at all ?] 2. the result -> if i autorelease the result, i don't know at which point the result will be deallocated. 3. sommeCommonString in appendStringMethod, should i retain it, release it or leave it alone ? </p> <p>Huh :)</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload