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

ske*_*ske 3 objective-c

我是一名 C# 程序员,现在我开始学习 Objective-c,一开始我有一些问题。我试图按照教程进行操作,所以在这里我遇到了标题所说的第一个问题。

我的目的是在C#中定义一些所谓的属性,我想给一个C#语言示例,它会是这样的。

public class Person
{
   public string name {get;set;}
   public int age  {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

所以在这里我找到了两种实现方式。

1.

@interface Person : NSObject

@property NSString *name;
@property int age;

@end
Run Code Online (Sandbox Code Playgroud)

2.

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

@end
Run Code Online (Sandbox Code Playgroud)

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

非常感谢,

das*_*ght 5

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

class Person {
    string name;
    int age;
}
Run Code Online (Sandbox Code Playgroud)

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