objective c - Confused about alloc and release -


i'm little confused objective-c , allocating/releasing objects.

if this:

nsstring *mystring;  if([somestring isequaltostring: @"test1"]){     mystring = @"got 1"; }else{     mystring = @"got 2"; } 

do have release mystring after that?

and same self-defined objects:

myownobject *someobject = [somearray objectatindex: 1];  mybutton.label1.text = someobject.name; 

do have release someobject?

the reason why i'm asking memory-leaks in method , can't find is. i'm trying figure out whether alloc/release stuff correctly. leak occurs on nsplaceholderstring (i guess that's somewhere hidden in nib-file).

also - if have object, allocate it, use of properties, release of every property on dealloc - cause memory leaks?

sorry - hope questions make @ least some sense :)

thanks help!

listen me. this rule matters.


if use method "copy", "alloc", "new", or "retain" in name

you own object , must later release or autorelease it.

if don't:

don't!

but don't expect object stick around outside of scope, because you don't own it.

it's simple.


myclass *foo = [[myclass alloc] init]; [array addobject:foo]; [foo release]; 

did use "copy", "retain", "new", or "alloc"? yes. release it.

myclass *someobject = [somearray objectatindex:0]; 

did use "copy", "retain", "new", or "alloc"? no. don't release it.

but

if have instance variable need access in other methods:

ivar = [[somearray objectatindex:0] retain]; 

then you're guaranteed stick around because own it.

(another way handle @property (retain) properties, because can self.ivar = someobject , it'll retain you.)

but remember release them in -dealloc!


Comments

Popular posts from this blog

c++ - How do I get a multi line tooltip in MFC -

asp.net - In javascript how to find the height and width -

c# - DataTable to EnumerableRowCollection -