Skip to content

Instantly share code, notes, and snippets.

@steipete
Last active January 6, 2024 07:24
Show Gist options
  • Star 148 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save steipete/9482253 to your computer and use it in GitHub Desktop.
Save steipete/9482253 to your computer and use it in GitHub Desktop.
Declare on your main init that all other init methods should call. It's a nice additional semantic warning. Works with Xcode 5.1 and above. Not tested with earlier variants, but should just be ignored. A reference to this macro shortly appeared in https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObj…
#ifndef NS_DESIGNATED_INITIALIZER
#if __has_attribute(objc_designated_initializer)
#define NS_DESIGNATED_INITIALIZER __attribute((objc_designated_initializer))
#else
#define NS_DESIGNATED_INITIALIZER
#endif
#endif
@janodev
Copy link

janodev commented Mar 23, 2014

@lukabernardi unavailable produces a compiler error that prevents accidental misbehavior. Intentional wrongdoers will be able to skip any other check you add.

@Mazyod
Copy link

Mazyod commented Jul 9, 2014

@nzhuk This is so stupid :( And when you use the unavailable attribute, you can't redefine that method in the subclass in order to make it available again >__< .. Need.. Swift.. Now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment