Skip to content

Instantly share code, notes, and snippets.

@dtorres
Last active August 29, 2015 14:19
Show Gist options
  • Save dtorres/814e3dc60c14d8494c68 to your computer and use it in GitHub Desktop.
Save dtorres/814e3dc60c14d8494c68 to your computer and use it in GitHub Desktop.
#import "UIViewController+designatedInitializerOverride.h"
@class Model;
@interface ModelViewController : UITableViewController
- (instancetype)initWithModel:(Model *)model NS_DESIGNATED_INITIALIZER;
DTTableViewControllerDesignatedInitializerOverrideHeader
@end
#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
//
// 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