любые ошибки при использовании @property и @synthesize

Я новичок в языке Objective-C и пытаюсь понять основные понятия. Я пришел с языка Java, поэтому я уже знаю принцип ООП-программирования. Вот код, который я написал. Это очень просто, но не работает должным образом. У меня есть некоторые проблемы с использованием @property и @synthesize

#import <Foundation/Foundation.h>

@interface Car: NSObject

@property(nonatomic,retain) NSString *brand;
@property int year;

@end //Car Interface


#import "Car.h"

@implementation Car

@synthesize brand;
@synthesize year;

@end //Car Implementation


#import "Car.h"

int main (int argc, const char * argv[])
{
    int y;

    //Creo un nuovo oggetto
    Car *myCar = [[Car alloc] init];

    //Setto i parametri
    [myCar setbrand: @"BMW Z4"];

    NSLog (@"Inserisci data modello: ");
    scanf (" %i", &y); //E' buona norma lasciare uno spazio
    [myCar setyear: y];

    //Stampo a video i dati
    NSLog(@"Marca: %@ Anno: %i", [myCar setbrand], [myCar setyear]);
}

Я не знаю, где ошибка. Я почти уверен, что в основной функции есть некоторые ошибки. правильно ли называть эти методы таким образом?


person Mazzy    schedule 01.08.2013    source источник
comment
stackoverflow.com/questions/2032826/property-synthesize   -  person stosha    schedule 01.08.2013
comment
Вам больше не нужно делать @synthesize с последней версией Xcode. Компилятор неявно синтезирует переменную экземпляра с префиксом подчеркивания.   -  person Mike Weller    schedule 01.08.2013
comment
Я программирую с помощью GNUstep, а не Xcode. Может, есть какая-то разница?   -  person Mazzy    schedule 01.08.2013
comment
Если вы хотите Objective-C 2.0, вы должны использовать clang.   -  person Fred Frith-MacDonald    schedule 02.08.2013


Ответы (1)


Сеттеры должны быть правильно написаны.

[myCar setBrand:@"BMW Z4"];
[myCar setYear:2010];

Геттеры по умолчанию используют имя свойства.

NSString *carBrand = [myCar brand];
int       carYear  = [myCar year];
person Fred    schedule 01.08.2013