Вам необходимо скопировать каждый struct
в объект NSData или NSValue, чтобы поместить его в NSArray.
// in
struct person someGuy = ...;
NSData *personData = [NSData dataWithBytes:&someGuy length:sizeof(struct person)];
[personArray addObject:personData];
// out
NSData *personData = [personArray objectAtIndex:whatever];
struct person someGuy;
[personData getBytes:&someGuy];
Вы должны понимать разницу между стеком и кучей и тем, как работать с указателями(или будьте готовы учиться), иначе вы увидите много EXC_BAD_ACCESS (или, что еще хуже, без исключений, просто загадочные данные мусора).