Классическое недоразумение в управлении памятью.
Вы alloc
cellText
в первой строке кода, но переопределяете его во второй строке.Так что теперь у вас нет доступа к исходному объекту, и вы освобождаете автоматически выпущенный объект, что приводит к сбою.
То же самое в операторах if, где вы переопределяете значение снова.В этой ситуации я бы использовал обычный, автоматически выпущенный объект NSString
, однако вы также можете использовать NSMutableString
, который вы освобождаете сами (но тогда вам придется приспособиться к коду, чтобы использовать методы NSMutableString
например, appendFormat:
вместо stringByAppendingFormat:
)
NSString *cellText = [NSString stringWithFormat:@"(%.1f points", totalpoints];
На этот раз вы никогда не alloc
вереница сами, поэтому вам не нужно ее отпускать.При переопределении переменной проблем не возникает, поскольку предыдущее значение будет автоматически освобождено.