Re: ARC problems
Re: ARC problems
- Subject: Re: ARC problems
- From: Jean-Daniel via Cocoa-dev <email@hidden>
- Date: Wed, 4 Sep 2019 00:47:22 +0200
> Le 4 sept. 2019 à 00:18, Turtle Creek Software <email@hidden> a
> écrit :
>
> The app delegate is NOT being deallocated prematurely- we have a breakpoint
> there to check.
>
> We don't allocate the app delegate explicitly, so I had to set a breakpoint
> in init() to see when it happens.
> It's created in main() via NSApplicationMain. Presumably its end of scope
> would be when main ends.
> The MainMenu.xib includes a Delegate object for our GSAppDelegate class, so
> it must be allocated
> via the nib-loading process (the stack trace says InitWithCoder).
>
> GSAppDelegate has strong references to 4 window controller members: main
> window, prefs window, and a couple of log windows.
> But that alone has not kept the main window controller alive. We haven't
> tested the others.
>
> The main window controller that was mysteriously dying used to have a strong
> reference back to the app delegate.
> Whether strong, weak or non-existent, it didn't make any difference. I
> suppose we could add a strong ref somewhere else
> just to be double safe, but I'm not sure where else would make sense.
You can get the same effect by retaining the controller explicitly (creating a
leak, so should be for testing purpose only).
CFBridgingRetain(windowController);
> The startup code was created 3 years ago when we were new to Cocoa, probably
> from one of the HIllegass books.
> It may have flaws, but the app has been running OK otherwise. The problems
> only started when we read about circular references
> and started making up-references __weak.
>
> BTW the Clang specs for ARC mention that it's not exception-safe. If I
> understand correctly,
> strong references will leak, and weak references are released. We don't
> throw any Cocoa exceptions but
> maybe the system does.
Manual Ref counting was not safe either, just like almost everything in Obj-C
frameworks. Exception are used only for fatal errors (expect in a couple of
legacy API). Don’t bother with exception safety. If your code raises an
exception, fix the bug to avoid seeing it again.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
References: | |
| >ARC problems (From: Turtle Creek Software via Cocoa-dev <email@hidden>) |
| >Re: ARC problems (From: Jean-Daniel via Cocoa-dev <email@hidden>) |
| >Re: ARC problems (From: Turtle Creek Software via Cocoa-dev <email@hidden>) |