Вам нужно больше скобок!
total.text = [[NSString alloc]initWithFormat:@"%.2f", -y+sqrtf(y*y-4*x*z)/2*x];
Квадратные скобки указывают, что вы отправляете сообщение Objective-C.Для каждого отправляемого сообщения вам понадобится одна пара скобок.Давайте разберем его так:
NSString *uninitializedString = [NSString alloc];
NSString *initializedString = [uninitializedString initWithFormat:@"%.2f", x+y+z];
total.text = initializedString;
В первой строке мы отправляем сообщение alloc
объекту NSString
, который на самом деле является объектом class , который знает каквыделить экземпляры NSString
.Но он не инициализирует экземпляры.Он в значительной степени просто выделяет память для них.
Во второй строке мы отправляем сообщение этому выделенному, но неинициализированному экземпляру NSString
, говоря ему инициализировать себя путем форматирования шаблона %.2f
,Это сообщение возвращает инициализированный экземпляр NSString
.
Наконец, в третьей строке мы используем этот инициализированный экземпляр NSString
.
Очевидно, было бы утомительно всегда требоватьпромежуточная переменная для хранения выделенного, но не инициализированного объекта.Таким образом, мы устраняем его, беря результат первого сообщения и отправляя ему сообщение напрямую:
total.text = [[NSString alloc] initWithFormat:@"%.2f", x+y+z];