An interesting question. The following samples are equivalent in terms of compiled code, but which one is more correct from the language's point of view?
self = [super init]; if (self) { } return self; self = [super init]; if (self != nil) { } return self; The Xcode samples promote the first variant, but I'm wondering if the second one is more correct? The "nil" is defined as follows (jumped to definition) #define nil NULL #define NULL ((void*)0) So basically, nil is of type "void*", so the expression "self != nil" compares two pointers and the result is "boolean", which is perfect for testing in the "if" statement. But the "self" alone is of type "pointer" and so when it is tested by the "if" statement, it's implicitly cast to the type "boolean". I also heard that generally speaking NULL is not necessarily always equal to 0 on all architectures. Thoughts? _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com