0

可能重复:
属性和实例变量声明

以下两者有什么区别:

一些类.h

@interface SomeClass : NSObject {
     NSString *someString;
}

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

一些类.h

@interface SomeClass : NSObject

@property (strong, nonatomic) NSString *someString;

@end

我知道接口和属性之后的 { } 内的声明有什么区别,但是同时使用和只使用属性有什么区别?

4

2 回答 2

2

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

于 2013-01-04T16:56:12.387 回答
1
{
     NSString *someString;
}

这是一个伊瓦尔。


@property (strong, nonatomic) NSString *someString;

这是一个创建 setter 和 getter(访问器)的属性。还会为您创建一个同名的类实例。

编辑:

如果只使用 ivar,则不能使用 self.ivar 名称。

你必须使用 by_ivar,意思是直接指向 ivar。

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

于 2013-01-04T16:56:50.610 回答