• 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: !foo vs foo == nil
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: !foo vs foo == nil


  • Subject: Re: !foo vs foo == nil
  • From: "Michael Ash" <email@hidden>
  • Date: Wed, 20 Aug 2008 19:57:25 -0400

On Wed, Aug 20, 2008 at 7:15 PM, Torsten Curdt <email@hidden> wrote:
> I guess my questions wasn't phrased correctly. The point was more: is 'nil'
> really the equivalent of 0 or NULL.
>
> There was a common perception that NULL is not really the same as nil. But
> seems like in the end it really is (void*)0.

As always, it's helpful to follow the rabbit down his hole and see
where he goes.

On stddef:403 we find this:

#define NULL ((void *)0)

So that's what NULL really is, at least on my system. Now, on
objc/objc.h:57 we find this:

#define nil __DARWIN_NULL	/* id of Nil instance */

Well, we have to follow that a bit further. But here we are, on sys/_types.h:91:

#define __DARWIN_NULL ((void *)0)

So not only are NULL and nil equivalent, they are the *same thing*.

(Now, they don't have to be. As I recall, NULL can just be a plain
integer 0 as well. But they do have to be equivalent, and it just so
happens that they are identical even though they don't need to be.)

Now, that's not to say that they're semantically equivalent. NULL is
meant to be any pointer type, whereas nil is meant to be for objects
only (and Nil, capital N, is meant to be for the Class type). So it's
best to keep that separation in your code to better indicate what's
truly going on. After all, that's why nil (and Nil) exist at all,
rather than just reusing NULL. But in the end they are ultimately the
same.

Mike
_______________________________________________

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: !foo vs foo == nil
      • From: Scott Ribe <email@hidden>
    • Re: !foo vs foo == nil
      • From: Douglas Davidson <email@hidden>
    • Re: !foo vs foo == nil
      • From: "mm w" <email@hidden>
References: 
 >!foo vs foo == nil (From: Torsten Curdt <email@hidden>)
 >Re: !foo vs foo == nil (From: Filip van der Meeren <email@hidden>)
 >Re: !foo vs foo == nil (From: Torsten Curdt <email@hidden>)

  • Prev by Date: Re: !foo vs foo == nil
  • Next by Date: Re: Outlet Initialization Uses Accessors
  • Previous by thread: Re: !foo vs foo == nil
  • Next by thread: Re: !foo vs foo == nil
  • Index(es):
    • Date
    • Thread