В Objective-C методы не могут использовать такие var-аргументы, они всегда должны приходить в конце вызова.
Фактически, параметры вашего вызова сообщения на самом деле являются указателями на буферы объектов и ключей.
Попробуйте это:
id objects[] = {@"hello", @"there", @"person"};
id keys[] = {@"aa", @"bb", @"cc"};
NSDictionary *dict1 = [[NSDictionary alloc] initWithObjects:objects forKeys:keys count:3];
NSLog(@"%@", [dict1 objectForKey: @"bb"]);