2013-01-04 60 views
0

可能重复:
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

由于LLVM 4.2版本的编译器不再有区别。您不再需要在{}内声明属性变量。

+2

这不是从iOS 5开始的。这是自LLVM 4.2版编译器开始使用以来。这不是iOS功能。它是一个编译器功能。 – rmaddy

+0

我会信任rmaddy。我只说io5,因为那时我注意到你不再需要它了。更新答案以反映这一点。 –

+0

@rmaddy:我想知道{&}内部是否受到保护,请评论这个? –

1
{ 
    NSString *someString; 
} 

这是一个伊娃。


@property (strong, nonatomic) NSString *someString; 

这是创建setter和getter(存取)的性质。还为您创建了一个具有相同名称的类实例。

编辑:

如果你只使用伊娃,你不能使用self.ivar名。

你必须使用_ivar,直接指向伊娃。

内部{&}受到保护。而@property是公开的。

+0

是的,我知道这一点。我只是不知道只使用一个属性和使用两者之间的区别。正如MechIntel所说的那样。 – c2programming

+0

@ c2programming:你检查我的编辑? –