• 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: self = [super init];
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: self = [super init];


  • Subject: Re: self = [super init];
  • From: "Stephen J. Butler" <email@hidden>
  • Date: Thu, 4 Dec 2008 02:53:07 -0600

On Thu, Dec 4, 2008 at 2:32 AM, EVS <email@hidden> wrote:
> Thank you, I suppose the reason I find it confusing  is because self is a
> pointer to the current object. If self were to release self ( the current
> object ), while it is being used, I would have guessed that would cause
> problems.

You can call [self release] as long as you don't access (directly or
indirectly) self for the rest of the method. So if you keep from
touching instance variables or calling methods off self then things
will be fine. And if your caller knows somehow (like checking return
values, in the case of init) to not reference the released self then
everything is kosher.

In fact, the same is true in C++ with "this", only a little more
pathologically so. You're allowed to call non-virtual member functions
off a bad "this" pointer because those functions are statically bound.
Causes confusion in every intro C++ course because students can't
figure out why their program is crashing in the middle of a method
call (when they finally access an instance variable off the bad "this"
pointer).

I even saw a horrible design pattern, probably on The Daily WTF, where
the programmer was doing singletons via something like:

((MyClass*)NULL)->getInstance();

Totally pathological, but nothing technically wrong with it as long as
you're careful.
_______________________________________________

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

  • Follow-Ups:
    • Re: self = [super init];
      • From: "Clark Cox" <email@hidden>
References: 
 >self = [super init]; (From: EVS <email@hidden>)
 >Re: self = [super init]; (From: Nathan Day <email@hidden>)
 >Re: self = [super init]; (From: EVS <email@hidden>)

  • Prev by Date: Re: "Live" image preview, huge memory usage...
  • Next by Date: Asynchronous timers (without a run loop)
  • Previous by thread: Re: self = [super init];
  • Next by thread: Re: self = [super init];
  • Index(es):
    • Date
    • Thread