Thanks Adam
Interesting feedback
> So what do you do with the code in that function?
If my UIViewController is (pseudocode):
class MyUIVC
{
void ViewDidLoad()
{
ApplicationSingleton.Messages += MessageHandler;
}
void MessageHandler(s, e)
{
// do stuff...
}
}
Obviously if my viewcontroller never unsubscribes then the from the
ApplicationSingleton.Messages event, then the C# viewcontroller object will
never get garbage collected...
So I'm currently wondering what 'uikit' hooks are available in which my
viewcontroller can unsubscribe.
Currently, I guess some of my options are:
- unsubscribe in the Dispose(bool) override - but be aware that this will
only get called after a memory alert has triggered - so it's not optimal and
you could have a lot of event subscriptions hanging around.
- consider using WeakReferences for the events - again not optimal (and also
a bit nasty to debug IMO)
- rearchitect the application behaviour to somehow use ViewDidAppear and
ViewDidDisappear (I think this is probably the best thing to do - I just
need to do some testing across tabs, splits, navigations, modals, popups,
etc to remind myself exactly when these selectors get called in a view
hierarchy)
- rearchitect the application behaviour to somehow use the
NavigationController Delegate
Actually writing this all down has really helped me make my own mind up -
very therapeutic - thanks :)
Stuart
P.S. I don't think my previous ViewDidUnload() handler was a good place to
unsubscribe either -so I'm glad this change is forcing me to look at the
architecture again :)
--
View this message in context:
http://monotouch.2284126.n4.nabble.com/Obsolete-methods-in-iOS-6-tp4657100p4657214.html
Sent from the MonoTouch mailing list archive at Nabble.com.
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch