Использование ...
NSLog(tempString1);
... опасно. Хотя похоже, что NSLog будет принимать любую строку в качестве единственного параметра, на самом деле определение действительной вызываемой функции дает понять, что первый параметр внутренне анализируется как строка формата.
void NSLogv (
NSString *format,
va_list args
);
Это означает, что любые символы в строке, имеющие формат, т. Е. "%", Будут обрабатываться как символы, а не как символы. Поэтому, если вы попытаетесь передать строку, «распродажа на 40%» NSLog будет искать аргументы и вылетать, когда не найдет их.