аксессоры ... аксессоры ... аксессоры ...
Используйте их ВСЕГДА. Без исключений (пока вы их не изучите).
когда вы делаете:
listNames = [[NSArray alloc] initWithObjects: @"Grocery", @"Wedding", @"History class",@"CS Class",@"Robotics",@"Nuclear Sciences", @"Video",@"Library",@"Funeral", nil];
вы действительно хотите делать:
[self setListNames:[NSArray arrayWithObjects: @"Grocery", @"Wedding", @"History class",@"CS Class",@"Robotics",@"Nuclear Sciences", @"Video",@"Library",@"Funeral", nil];
или
self.listNames = [NSArray arrayWithObjects: @"Grocery", @"Wedding", @"History class",@"CS Class",@"Robotics",@"Nuclear Sciences", @"Video",@"Library",@"Funeral", nil];
Установив listNames напрямую (без ссылки на себя), вы не используете средства доступа и откроете целый мир боли, когда попытаетесь устранить утечки. Чтобы попасть в ваш список, просто используйте метод доступа:
[self listNames];
или
self.listNames;
Опять же, избегайте соблазна НЕ использовать средства доступа.