I'm getting the compile error:
error: convenience initializer missing a 'self' call to another initializer [-Werror,-Wobjc-designated-initializers]
Compile-checked designated initializers might be a good thing, but if I don't want deal with that right now, how can I turn this off?
Following on from Clay's answer..
You might want to suppress the warning on one occurrence, not all of them:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-designated-initializers"
- (instancetype) initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
// do whatever I was doing....
}
return self;
}
#pragma clang diagnostic pop
EDIT: However, I've only actually used this once myself. I find it the same amount (or a little more) effort just to do it properly if it's a single case. So flag up your constructor with NS_DESIGNATED_INITIALIZER. And if it then complains about the init method not being overridden add an init method to your header with NS_UNAVAILABLE.
In your project:
-Wno-objc-designated-initializers
.You can also do some combination of this and -Wobjc-designated-initializers
on a per file basis or with clang diagnostic pushes and pops (cf. @bandejapaisa's "Method 3" answer below).
This method allows you to switch back and forth between Xcode 5 & 6, and also provides you a reminder to fix the designated initializer stuff.
For iOS development, put this in your .pch
(precompiled header) file:
#ifdef __IPHONE_8_0
// suppress these errors until we are ready to handle them
#pragma message "Ignoring designated initializer warnings"
#pragma clang diagnostic ignored "-Wobjc-designated-initializers"
#else
// temporarily define an empty NS_DESIGNATED_INITIALIZER so we can use now,
// will be ready for iOS8 SDK
#define NS_DESIGNATED_INITIALIZER
#endif
The analog to __IPHONE_8_0
for OS X 10.10 is __MAC_10_10
.
If you are interested in why these messages exist, you can check out this SO answer or these Apple docs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With