• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Cocoa Open GL help
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cocoa Open GL help


  • Subject: Re: Cocoa Open GL help
  • From: Vince DeMarco <email@hidden>
  • Date: Wed, 12 Sep 2001 08:53:36 -0700

On Wednesday, September 12, 2001, at 12:57 am, Raphael Sebbe wrote:

I can't see a case where a class defined by the user could override -initWithCoder: and that it would be called when the nib is loaded (except for categories and poseAsClass stuff...). This is because IB does not encode classes for which it doesn't have access to their implementation (that is all classes outside of AppKit/Foundation).


Yes this is true. If you select a NSButton and in IB make a subclass of NSButton called MyButton, when you set the custom class of NSButton to MyButton, we actually write out (encode) and NSButton, but tell NSArchiver to swap an instance of NSButton with MyButton.

So if youre MyButton initWithCoder: is expecting some data in the stream you will get an error and it will not work.

As we were talking about MyOpenGLView, subclass of NSOpenGLView from the previous posts, that is why I suggested -initWithFrame: for initialization stuff, which for me is different from setup stuff (-awakeFromNib).



If you use a CustomView and set the class to MyOpenGLView then initWithFrame: will get called but if MyOpenGLView is set as a custom class to the NSOpenGLView that you drag in from the palette, the initWithFrame: method on MyOpenGLView will never get called.

Am i just confusing everyone or is this explanation helping????

vince

On Tuesday, September 11, 2001, at 11:55 PM, Vince DeMarco wrote:

initWithFrame: will only get called for a CustomView, or in the case of a customobject we will call init.

In every other case we basically go though the NSCoder stuff and call initWithCoder: when the object gets read out of the nib file.

But i would not recommend over riding the initWithCoder: (unless you are really careful). Just add a awakeFromNib method and do the initialization that you need there. awakeFromNib gets called on all of the objects in the nib after all of the connections have been made. This is the safest way of doing this.


  • Follow-Ups:
    • Re: Cocoa Open GL help
      • From: email@hidden
    • Re: Cocoa Open GL help
      • From: Carlos Weber <email@hidden>
    • Re: Cocoa Open GL help
      • From: Raphael Sebbe <email@hidden>
  • Prev by Date: Re: an interesting delegate design issue raised by IB...
  • Next by Date: Re: *That* book
  • Previous by thread: Re: Cocoa Open GL help
  • Next by thread: Re: Cocoa Open GL help
  • Index(es):
    • Date
    • Thread