我是一名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
我很想知道有什么不同。
非常感谢,
答案 0 :(得分:4)
您的第二个界面将转换为C#,如下所示:
class Person {
string name;
int age;
}
换句话说,实例变量类似于C#的字段,而属性与C#的属性非常相似。 C#的“自动”属性与Objective C的属性之间的最大区别在于,在C#中它是“全有或全无”:您要么自动创建属性,要么为它声明变量。在Objective C上,你可以有一个自动生成的getter和一个手动编写的setter(或者反过来)。
答案 1 :(得分:1)
使用第二个,您只创建实例变量
@property
会自动生成这些作为关联的getter和setter方法。