是否有必要在Objective-C@接口的方括号内指定@property对象



可能重复:
属性也声明为实例变量?

假设我有一个目标c类接口,比如:

@interface {
     NSString * someString;
}
@property (nonatomic, retain) NSString *  someString;

通过一个@实现,@合成字符串并做一些其他事情。

我想知道的是,是否有必要在括号内声明NSString*someString对象指针。(顺便说一句,是否有一个特定的术语来表示定义变量的括号之间的空格?(如果我省略NSString*someString声明,并且@property行具有所有相同的类型信息,那么代码似乎会正常工作。那么,如果没有必要有变量声明,为什么选项会存在呢?如果变量声明和@property声明中有冲突的类型,会发生什么?

在大多数情况下,这不应该是必要的,因为如果@synthesize没有预定义,它将创建一个变量。此外,您还可以使用@synthesize创建自己的变量,使用:

@synthesize aVar = _theVariableName;

这将创建一个getter方法(aVar(、一个setter方法(setAVar(和一个名为_theVariableName的实例变量,您可以将其用于内存管理。

然而,我不知道@dynamic是否也会这样做,如果实现您自己的setter和getter,我认为您需要声明。。。

最新更新