Почему я не могу объявить переменную типа "newVariable" в Obj-C?
Ошибка, которую я получил
error: property synthesized getter follows Cocoa naming convention for returning 'owned' objects
/Users/.../ViewController.h:12:40:
note: property declared here
@property (nonatomic, retain)NSString *newString;
Почему я не могу использовать новый в имени переменной в начале? (например, newString
)
Ответы
Ответ 1
Объявление свойства синтезирует два метода доступа (getter/setter):
-(NSString*)newString;
-(void)setNewString:(NSString*)newString;
Objective-C имеет соглашение об именах для управления памятью, которое выполняется компилятором. Методы, начинающиеся с new
(также "alloc", "copy", "mutableCopy" ), должны возвращать объект, который будет "принадлежать" вызывающему. См. documentation. Созданный метод доступа не соответствует правилу.
Ответ 2
Это соглашение об именах уже используется в Objective-C. Для этого вам нужно будет использовать что-то вроде простого старого myString
. Это компилятор - компиляторы придирчивы.