目标c中的@Property和{fields}之间有什么区别?

时间:2013-04-04 12:51:14

标签: objective-c

我是一名C#程序员,现在我开始学习Objective-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

我很想知道有什么不同。

非常感谢,

2 个答案:

答案 0 :(得分:4)

您的第二个界面将转换为C#,如下所示:

class Person {
    string name;
    int age;
}

换句话说,实例变量类似于C#的字段,而属性与C#的属性非常相似。 C#的“自动”属性与Objective C的属性之间的最大区别在于,在C#中它是“全有或全无”:您要么自动创建属性,要么为它声明变量。在Objective C上,你可以有一个自动生成的getter和一个手动编写的setter(或者反过来)。

答案 1 :(得分:1)

使用第二个,您只创建实例变量 @property会自动生成这些作为关联的getter和setter方法。