• 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
NSDocument -init vs. initWithContentsOfFile:ofType:
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

NSDocument -init vs. initWithContentsOfFile:ofType:


  • Subject: NSDocument -init vs. initWithContentsOfFile:ofType:
  • From: Keith Renz <email@hidden>
  • Date: Sun, 31 Aug 2003 15:55:16 -0400

In my NSDocument subclass, I would like to have separate initializations for new (untitled) documents and documents opened from file, i.e. mutually exclusive inits. What I want to do is not perform a new document's initialization when opening from a file. This seems like a difficult thing to do because my new document initialization is done in the -init method. When I open a new document, all works well. But when I open a document from file, -init is invoked, does the new document initialization, and eventually -loadDataRepresentation:ofType: is invoked, re-initializing most of the data. Seems like a waste. In fact, in a different NSDocument subclass, it's more than just a waste, but a problem.

The Programming Topic, Creating a Subclass of NSDocument, says:

-----

The initializers of NSDocument are another issue for subclassers. The init method is the primary initializer, and it is invoked by the other initializer initWithContentsOfFile:ofType:. The init method is directly invoked when a new document is created; the initWithContentsOfFile:ofType: method is directly invoked when a document is opened. Therefore if you have any initializations that apply only to documents that are opened, you should override initWithContentsOfFile:ofType:; if you have general initializations, you should, of course, override init. In both cases, be sure to invoke super's implementation as the first thing.

-----

I really can't isolate the initializations using initWithContentsOfFile:ofType: for documents from file because it immediately invokes -init, assuming I invoke super as required, which does the new document initialization. I can set a "has file" flag in -initWithContentsOfFile:ofType: before invoking super, and check the flag in -init before doing the new document initialization, but that's clearly wrong due to the issues with self during initialization.

I feel like I'm missing something. Can someone shed some light on this?

Thanks,

Keith
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

  • Prev by Date: Re: NSTimers gone wild...
  • Next by Date: Re: Drawing text "with NSText"
  • Previous by thread: HERE'S HOW: distinguish old archives from keyed archives
  • Next by thread: Resizing windows by their edges and corners
  • Index(es):
    • Date
    • Thread