我在我的UIView中声明了一个属性,如下所示:
@property (nonatomic, strong) NSMutableArray *finishedLines;
我使用初始化:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
//[self setFinishedLines:[[NSMutableArray alloc] init]];
[self setBackgroundColor:[UIColor grayColor]];
如果我取消注释[self setFinishedLines..]
?
当我声明属性时,它是否已经初始化了?
如果我取消注释,我会得到不同的结果,但我不理解逻辑。
答案 0 :(得分:3)
objective-c中的属性不会自动初始化。
你必须在构造函数中分配和初始化它(或使用new,这基本上是alloc和init的快捷方式)。
self.finishedLines = [[NSMutableArray alloc] init]];
答案 1 :(得分:0)
不,它本身不会被初始化。您需要在需要时对其进行初始化。如果您确定在调用initWithFrame:
方法时,您需要“取消注释”您的代码。
答案 2 :(得分:0)
此类属性的声明不会为其分配对象。它只是指向NSMutableArray
的指针。其他对象可以使用它在NSMutableArray
对象上设置UIView
。但是你可能还需要在内部声明一个(你可以在你的init中做),如果你需要确保一个总是可以访问的。