Re: initWIthFrame or awakeFromNib
Re: initWIthFrame or awakeFromNib
- Subject: Re: initWIthFrame or awakeFromNib
- From: Jonathan Hess <email@hidden>
- Date: Thu, 14 May 2009 09:31:52 -0700
On May 13, 2009, at 9:32 PM, Joar Wingfors wrote:
...to follow up on that a bit: When you're instantiated from nib
loading you will not see "-initWithFrame:" being called, but rather
"-initWithCoder:". You can read more about that in the NSCoding &
Nib Loading documentation.
Depending on what you subclass, you might get either message.
Here's a link to the documentation:
http://developer.apple.com/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW18
You can in a case like this implement both "-initWithFrame:" and "-
initWithCoder:" and then call the method that provides your shared
initialization code from both of them, like Luke suggested.
I would add that if there's any chance that your view might in turn
be subclassed, you should probably pick a unique name for the
method, so that it's not stomped on by a subclass doing the same
thing. Something like: "-commonInitForFoo", if Foo is the name of
the class in question.
Finally, you need to treat "-initWithCoder:" just like you would any
other init method. Unlike "-awakeFromNib" you must not attempt to
access to any outlets, actions or bindings set up in the nib file -
They probably haven't been re-established yet, as the nib file is in
the process of being unarchived. If you need to reference anything
configured in the nib file, you have to wait for "-awakeFromNib".
That said, you can use "-initWithCoder:" for stuff that you would
otherwise do in "-initWithFrame:" or any other initializer, in other
words: Setting up your instance, without making any assumptions
about how it's currently hooked up to the outside world.
j o a r
On 13 maj 2009, at 16.59, Luke the Hiesterman wrote:
If you have some initialization that needs to be done from multiple
init points, it's common to create a method for this, say
commonSetup. Then in all init paths, you would do [self commonSetup].
Luke
On May 13, 2009, at 4:56 PM, Ramakrishna Vavilala wrote:
I have a custome view class which I use to host some CALayers. As
I specify
the view in the Nib file, I use awakeFromNib to create the
CALayers. Part of
me however thinks that initWithFrame might be more suitable for this
initialization as it can be used for views created outside of
interface
builder (not likely for my project).
Which method is the correct one?
_______________________________________________
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
_______________________________________________
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