Вы можете создать метод, который проверяет, является ли слово допустимым, а затем утверждать, что метод возвращает true.Это могло бы привести к сбою приложения, если бы программист когда-либо вызывал метод с неверной строкой, но не помогло бы, если бы пользователи могли сами вводить строки.Кроме того, если вы используете настройки проекта по умолчанию, утверждения выполняются только при сборке с конфигурацией Debug
.
Например:
static NSSet* __validStrings = nil;
- (BOOL)checkString:(NSString*)string
{
if( [string length] == 0 ) return NO;
static dispatch_once_t token;
dispatch_once(&token, ^{
// build the list of valid words once, or load from a plist or something
// if they are very large or change often
NSArray* validWords = [NSArray arrayWithObjects:@"valid", @"doSomething", @"etc.", nil];
__validStrings = [[NSSet alloc] initWithArray:validWords];
});
return [__validStrings containsObject:string];
}
// your doStuff implementation
- (void)doStuff:(NSString*)doStuffWith
{
// This will crash the program and give you debugging information if doStuffWith
// is not in your string list
NSAssert1( [self checkString:doStuffWith], @"invalid string: %@", doStuffWith );
// continue on with your method implementation...
}