gpt4 book ai didi

iphone - 基本 Objective-C 变量声明

转载 作者:太空狗 更新时间:2023-10-30 03:50:14 24 4
gpt4 key购买 nike

我对如何在 Objective-C 中声明变量感到困惑。

1:我看到正在使用 @property@synthesize 语句。我的问题是,这两个声明是做什么用的?为什么它们总是一起使用?我猜 @synthesize 是创建 getter 和 setter 的快捷方式?

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

3:是否有不同的方法来声明一个只能在它声明的类中访问的变量,使其在所有类中都可以访问?

4:与问题2类似,但现在变量是一个NSString。为什么我不必分配和初始化它以在其自己的类中共享相同的变量? self.myString = @"";myString = @"";

有什么区别

非常感谢。

最佳答案

第一个问题:

@property (nonatomic, retain) NSString * someProperty;

这声明了类的一个属性。它成为类(class)公共(public)契约的一部分,但仍然缺少一些重要的东西 - 实际实现

@synthesize someProperty;

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

几乎在所有情况下,您声明的每个 @property 总是有一个 @synthesize


第二个问题:

关于如何初始化数组属性,你是正确的。为了释放它,您将在类的 dealloc 方法中执行以下操作:

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

[super dealloc];
}

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


最后一个问题:

一个类的属性总是可以从其他类获得。为了创建一个全局可访问的变量,您可以将其声明为static

关于iphone - 基本 Objective-C 变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com