3

我是一名 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

我很想弄清楚有什么区别。

非常感谢,

4

2 回答 2

5

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

class Person {
    string name;
    int age;
}

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

于 2013-04-04T12:56:10.957 回答
1

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

于 2013-04-04T12:54:51.320 回答