在线阅读了一些教程后,我看到了两种不同的声明属性的方法。 我想知道一个人是否比另一个更正确:
选项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
答案 0 :(得分:2)
第一个选项使用自动引用计数(ARC);第二个没有。没有一个比另一个更“正确” - 第一个更简单,更现代。您应该使用ARC,除非您有充分的理由不这样做(例如,因为需要在传统平台上支持遗留代码)。
这是link以了解有关ARC的更多信息。
答案 1 :(得分:1)
选项1启用了ARC。从iOS5 SDK开始,它是Xcode中的默认选项。
强表示视图控制器将管理此变量
对于iOS5,这是一个很好的ARC tutorial。
选项2禁用了自动引用计数。 当设置变量
时,视图控制器将保留(增加保留计数)答案 2 :(得分:0)
过去必须明确声明一个实例变量来支持每个属性。使用“现代”运行时,不再需要 - 对于属性的@synthesize指令将负责创建iVar(如果尚不存在)。有些人仍然保留ivar声明,要么是出于偏好,要么只是习惯,当然你会看到旧代码中声明的ivars。这样做的一个好处是,您可以在调试器中更轻松地查看属性的值。
使用strong
和retain
之间的区别在于是否分别使用ARC。