Вам нужно использовать спецификатор %d
или %i
вместо %@
для указания целого числа.Если с int используется %@
, то он попытается получить доступ к объекту по адресу, указанному в int.Например, если значение i
равно единице, оно пытается получить доступ к объекту по адресу один, что приведет к неправильному доступу.
NSString *titleVarName = [[NSString alloc] initWithFormat:@"%@%d",@"occasionTitle",i];
А также вам здесь не нужны alloc
и release
, хотя это не является причиной плохого доступа.Вы можете использовать вспомогательный конструктор.
NSString *titleVarName = [NSString stringWithFormat:@"occasionTitle%d", i];
// release not required
Сделайте то же самое для dateVarName
и imageVarName
тоже.