У меня есть объект с именем exampleObject
с двумя строковыми свойствами: moduleName
и pool
.
@property (nonatomic, assign) NSString *moduleName;
@property (nonatomic, assign) NSString *pool;
Оба они установлены с использованием двух текстовых полей с именами moduleNameField
и poolField
соответственно, когда IBAction запускается:
if (![[moduleNameField text] isEqualToString:@""]) {
[[[appDelegate moduleList] objectAtIndex:[appDelegate moduleNum]] setModulename:[moduleNameField text]];
}
if (![[poolField text] isEqualToString:@""]) {
[[[appDelegate moduleList] objectAtIndex:[appDelegate moduleNum]] setPool:[poolField text]];
}
После проверки их значения с помощью оператора NSLog:
NSLog(@"The moduleName is:%@", [[[appDelegate moduleList] objectAtIndex:[appDelegate moduleNum]] moduleName]);
NSLog(@"The pool is:%@", [[[appDelegate moduleList] objectAtIndex:[appDelegate moduleNum]] pool]);
Я получаю правильный вывод:
The moduleName is:Module Name One
The pool is:Pool One
Вот где это становится странным.После вызова функции exampleObject
я пытаюсь получить свойства pool
и moduleName
, используя:
NSString *theModName = [NSString stringWithFormat:@"%@\n", [self moduleName]];
NSLog(@"The Name is:%@",theModName);
NSString *thePool = [NSString stringWithFormat:@"%@\n", [self pool]];
NSLog(@"The Pool is:%@",thePool);
Я могу добраться до первого оператора журнала, где он печатает:
The Name is:Module Name One
Однако приложение вылетает на следующей строке без сообщения об ошибке.Еще более интересно то, что он падает только тогда, когда thePool
является строкой с пробелами или смешанным регистром.Если бы вместо «Pool One» я сделал его «poolone», он не потерпел бы крах.
Любое понимание этого было бы очень полезно!