ios AppDelegate属性声明

时间:2012-04-03 02:29:43

标签: ios properties

在线阅读了一些教程后,我看到了两种不同的声明属性的方法。 我想知道一个人是否比另一个更正确:

选项1:

#import <UIKit/UIKit.h>

@interface AppDelegate : NSObject
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UITabBarController *mytabs;

@end

选项2:

#import <UIKit/UIKit.h>

@interface AppDelegate : NSObject {
UIWindow *window;
UITabBarController *mytabs;
}

@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) UITabBarController *mytabs;

@end

3 个答案:

答案 0 :(得分:2)

第一个选项使用自动引用计数(ARC);第二个没有。没有一个比另一个更“正确” - 第一个更简单,更现代。您应该使用ARC,除非您有充分的理由不这样做(例如,因为需要在传统平台上支持遗留代码)。

这是link以了解有关ARC的更多信息。

答案 1 :(得分:1)

选项1启用了ARC。从iOS5 SDK开始,它是Xcode中的默认选项。

表示视图控制器将管理此变量

对于iOS5,这是一个很好的ARC tutorial

选项2禁用了自动引用计数。  当设置变量

时,视图控制器将保留(增加保留计数)

答案 2 :(得分:0)

过去必须明确声明一个实例变量来支持每个属性。使用“现代”运行时,不再需要 - 对于属性的@synthesize指令将负责创建iVar(如果尚不存在)。有些人仍然保留ivar声明,要么是出于偏好,要么只是习惯,当然你会看到旧代码中声明的ivars。这样做的一个好处是,您可以在调试器中更轻松地查看属性的值。

使用strongretain之间的区别在于是否分别使用ARC。