基本目标C变量声明

Joh*_*ohn 5 iphone objective-c

我对目标C中声明的变量如何感到困惑.

1:我看到@property并且使用了@synthesize声明.我的问题是,这两个声明是什么?为什么他们总是一起使用?我想@synthesize是创建getter和setter的捷径?

2:说,我想声明一个只能在声明的类中访问的NSMutableArray.我必须myArray = [[NSMutableArray alloc] init]在使用该addObject方法向其写入内容之前执行.我什么时候发布阵列呢?

3:是否有一种不同的方式来声明一个只能在声明可以在所有类中访问的类才能访问的变量?

4:类似于问题2,但现在变量是NSString.为什么我不必分配和初始化它在自己的类中共享相同的变量?请告诉我之间的不同self.myString = @"";来myString = @"";

非常感谢.

Per*_*ion 5

对于你的第一个问题:

@property (nonatomic, retain) NSString * someProperty;
Run Code Online (Sandbox Code Playgroud)

这声明了类的属性.它成为班级公共合同的一部分,但仍缺乏重要的东西 - 实际实施

@synthesize someProperty;
Run Code Online (Sandbox Code Playgroud)

这是编译器糖,它为您的属性创建一个getter和setter方法.也就是说,这是为了在您的类和其他类中实际使用您的属性所需的实现.

几乎在所有情况下,您都会@synthesize为每个@property声明一个.


对于你的第二个问题:

您对如何初始化数组属性是正确的.要释放它,您将在类dealloc方法中执行以下操作:

- (void) dealloc {
    self.myarray = nil;

    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

这有效地释放了数组(假设您使用关键字retain声明了您的属性).


对于你的上一个问题:

其他类始终可以使用类的属性.要创建一个全局可访问的变量,您可以将其声明为static.


Mik*_*Hay 0

1)@property声明一个可公开访问的变量以及关联的 getter 和 setter。 @synthesize使编译器自动生成 getter 和 setter 的定义(代码)。

2)您可以在头文件中的类声明中声明 NSMutableArray。您将在方法中初始化变量init,并在方法中释放变量dealloc。

3)使用创建的变量@property是公共的。可以使用关键字将类声明中定义的变量(@interface在头文件中使用)声明为该类的私有变量@private。

约翰,这些问题都很基本。您可能会从这里的 Objective-C 编程介绍中得到很多东西(http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html#//apple_ref/doc /uid/TP30001163)。