2013-04-04 2 views
1

Я программист на C#, и теперь я начал изучать Objective-c, у меня есть некоторые вопросы в самом начале. Я пытался следить за учебниками, поэтому здесь я встретил первый вопрос, как говорится в названии.В чем разница между @Property и {полями} в объекте c?

Моя цель - определить некоторые свойства как так называемые, как в C#, я хотел бы дать образец языка C#, это будет так.

public class Person 
{ 
    public string name {get;set;} 
    public int age {get;set;} 
} 

поэтому здесь я нашел два пути для реализации.

1.

@interface Person : NSObject 

@property NSString *name; 
@property int age; 

@end 

2.

@interface Person : NSObject 
{ 
    NSString *name; 
    int age; 
} 

@end 

Я стремлюсь, чтобы выяснить, в чем разница.

Спасибо большое,

+0

В первую очередь это свойства; во втором - iVars (без геттера/сеттера) – viral

ответ

4

Ваш второй интерфейс будет перевести на C# следующим образом:

class Person { 
    string name; 
    int age; 
} 

Другими словами, переменные экземпляра похожи на C# «s полей, в то время как свойства очень похожи на C#» s свойства. Самая большая разница между «автоматическими» свойствами C# и свойствами Objective C заключается в том, что в C# это «все или ничего»: вы либо делаете свойство автоматическим, либо объявляете для него переменную. В Objective C вы можете использовать автогенератор и ручной скрипт (или наоборот).

1

С второй вы только создаете переменные экземпляра.
@property автоматически генерирует вас как связанные с ними методы получения и настройки.

Смежные вопросы