Почему я не могу объявить переменную типа "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. Это компилятор - компиляторы придирчивы.