什么是属性和属性与实例变量的区别?

时间:2013-01-04 16:51:35

标签: objective-c ios

  

可能重复:
  Properties and instance variable declaration

以下两者之间有什么区别:

SomeClass.h

@interface SomeClass : NSObject {
     NSString *someString;
}

@property (strong, nonatomic) NSString *someString;
@end

SomeClass.h

@interface SomeClass : NSObject

@property (strong, nonatomic) NSString *someString;

@end

我知道接口和属性之后{}内的声明之间的区别是什么,但是使用两者之间的区别是什么呢?

2 个答案:

答案 0 :(得分:2)

由于LLVM版本4.2编译器不再存在差异。您不再需要在{}。

中声明属性变量

答案 1 :(得分:1)

{
     NSString *someString;
}

这是一个伊娃。


@property (strong, nonatomic) NSString *someString;

这是一个创建setter和getter(访问器)的属性。此外,还为您创建了一个具有相同名称的类实例。

编辑:

如果您只使用ivar,则无法使用self.ivar名称。

您必须使用_ivar,意味着直接使用ivar。

内部{&受保护。虽然@property是公开的。