激しく素早く失敗する (注意を引く) ことを可能にする assert を使用できます。
- (void)viewDidLoad
{
[super viewDidLoad];
NSAssert(self.myLabel, @"IBOutlet not set for self.myLabel");
}
おそらくこれをマクロにまとめて、タイピングを節約できます-おそらく次のようなものです
#define PASOutletAssert(outlet) NSAssert(outlet, @"IBOutlet not set for " @#outlet)
- (void)viewDidLoad
{
[super viewDidLoad];
PASOutletAssert(self.myLabel);
PASOutletAssert(self.myOtherLabel);
}
タイピングを節約する別のバリエーションは、次のようになります-
#define PASOutletsAssert(self, ...) _PASOutletsAssert(self, @"" # __VA_ARGS__)
void _PASOutletsAssert(id self, NSString *commaSeperatedKeyPaths)
{
NSArray *keyPaths = [commaSeperatedKeyPaths componentsSeparatedByString:@", "];
for (NSString *keyPath in keyPaths) {
NSCAssert1([self valueForKeyPath:keyPath], @"IBOutlet not set for keypath - \"%@\"", keyPath);
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
PASOutletsAssert(self, myLabel, otherLabel, yellowSquare);
}