Last active
August 29, 2015 14:19
-
-
Save dtorres/814e3dc60c14d8494c68 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "UIViewController+designatedInitializerOverride.h" | |
@class Model; | |
@interface ModelViewController : UITableViewController | |
- (instancetype)initWithModel:(Model *)model NS_DESIGNATED_INITIALIZER; | |
DTTableViewControllerDesignatedInitializerOverrideHeader | |
@end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "ExampleController.h" | |
@implementation ModelViewController | |
- (instancetype)initWithModel:(Model *)model | |
{ | |
NSParameterAssert(model) | |
self = [super initWithStyle:UITableViewStylePlain]; | |
if (self) { | |
//Do Something with model | |
} | |
return self; | |
} | |
//More methods here | |
#pragma mark - Super designated initializers | |
DTTableViewControllerDesignatedInitializerOverrideImpl(initWithModel:nil) | |
@end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// UIViewController+designatedInitializerOverride.h | |
// | |
// Created by Diego Torres on 4/14/15. | |
// | |
#ifndef DT_UIViewController_designatedInitializerOverride_h | |
#define DT_UIViewController_designatedInitializerOverride_h | |
#if DEBUG | |
/** Header definitions */ | |
#define DTViewControllerDesignatedInitializerOverrideHeader \ | |
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil NS_UNAVAILABLE; \ | |
- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; \ | |
#define DTTableViewControllerDesignatedInitializerOverrideHeader \ | |
SPViewControllerDesignatedInitializerOverrideHeader \ | |
- (instancetype)initWithStyle:(UITableViewStyle)style NS_UNAVAILABLE; | |
/** Class implementations */ | |
#define DTViewControllerDesignatedInitializerOverrideImpl(designatedInit) \ | |
- (instancetype)initWithCoder:(NSCoder *)aDecoder \ | |
{ \ | |
return [self designatedInit]; \ | |
} \ | |
_Pragma("clang diagnostic push")\ | |
_Pragma("clang diagnostic ignored \"-Wobjc-designated-initializers\"")\ | |
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil \ | |
{ \ | |
return [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; \ | |
} \ | |
_Pragma("clang diagnostic pop") | |
#define DTTableViewControllerDesignatedInitializerOverrideImpl(designatedInit) \ | |
DTViewControllerDesignatedInitializerOverrideImpl(designatedInit) \ | |
- (instancetype)initWithStyle:(UITableViewStyle)style \ | |
{ \ | |
return [self designatedInit]; \ | |
} | |
#else | |
#define DTViewControllerDesignatedInitializerOverrideHeader | |
#define DTTableViewControllerDesignatedInitializerOverrideHeader | |
#define DTViewControllerDesignatedInitializerOverrideImpl(designatedInit) | |
#define DTTableViewControllerDesignatedInitializerOverrideImpl(designatedInit) | |
#endif | |
#endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment