Hi Omar,
On 03/30/2012 10:35 PM, Omar Campos wrote:
> I've been reading the tutorials at
>
http://www.gnustep.it/nicola/Tutorials/ and trying them out from
> memory, but using ProjectCenter instead of manually creating the
> GNUMakefile. When running my app, I kept getting an illegal
> operation. Upon closer inspection, I found the problem to be the
> following line:
>
> mainWnd = AUTORELEASE([NSWindow alloc]);
>
> mainWnd is a NSWindow* object declared in my AppController.h. When
> called from applicationWillFinishLaunching:, the line above caused an
> illegal operation. After removing the call to the AUTORELEASE() macro,
> it worked. Calling AUTORELEASE worked fine when adding an NSMenu*
> object to the app. The question is: when should I initialize an
> object with AUTORELEASE, and when shouldn't I?
>
> Also, coming from a iOS background, I am used to seeing [[objectClass
> alloc] init] for initialization, yet in GNUStep, it is done with
> [new]. What's the difference? Or when should I use [[alloc] init]?
You can refer to this site for more information about this:
http://www.gnustep.org/resources/documentation/Developer/Base/ProgrammingManual/manual_3.htmlMy golden rule to work with retain/releases is to retain an object you
do need, and release it when you no longer need. When you no longer need
an object, but you are not sure if some other object will need it, you
put that object in the latest created autorelease pool by calling [obj
autorelease]. If no one calls a retain on that object up to the end of
the next application loop (or the clean-up of the autorelease pool), the
object is freed.
But in the link above you have a much better explanation of all the
retain/release process, including the doubts
about the allocation you mentioned.
Cheers,
Lucas
_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustep@...
https://lists.gnu.org/mailman/listinfo/discuss-gnustep