В NSArray будет сгенерировано исключение, если вы попытаетесь добавить объект nil. Сначала проверьте состояние:
if ([nameField text]) [categories addObject:[nameField text]];
EDIT:
Также из вашего кода вам нужно реализовать протокол UIAlertViewDelegate и попытаться добавить ваш объект в ваш массив там. Например:
- (void) showDialog {
UIAlertView* dialog = [[UIAlertView alloc] init];
[dialog setDelegate:self];
[dialog setTitle:@"Category name"];
[dialog setMessage:@" "];
[dialog addButtonWithTitle:@"Cancel"];
[dialog addButtonWithTitle:@"OK"];
nameField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
[nameField setBackgroundColor:[UIColor whiteColor]];
[dialog addSubview:nameField];
[dialog show];
[dialog release];
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if ([nameField text]) [categories addObject:[nameField text]];
[categoryTable reloadData];
}
Предполагается, что nameField и категории являются iVars, и вам нужно будет освободить их, когда они больше не нужны. Вы также должны проверить, какая кнопка была нажата в методе делегата. HTH Дэйв