我是否需要手动创建一个NSMutableArray(如果它已被属性&合成方法?
在下面的代码中,我看到一个问题,即“addEvent”方法似乎不起作用。即使在调用它之后_Events变量的计数仍为零(0)。我想知道这个代码是否需要手动创建/初始化数组? (并且不依赖于sythesize方法这样做)
标头文件
#import <Foundation/Foundation.h>
@interface Weekend : NSObject {
NSMutableArray* _events;
}
- (void)addEvent:(EKEvent*)event;
@property (nonatomic, retain) NSMutableArray* events;
@end
实施
#import "Weekend.h"
@implementation Weekend
@synthesize events = _events;
- (void)addEvent:(EKEvent*)event {
[self.events addObject:event];
}
@end
答案 0 :(得分:4)
是
@synthesize
会自动创建引用self.events
时使用的getter / setter方法。它不会为您分配(或释放)_events对象。
答案 1 :(得分:3)
你可以在init方法中创建它,但如果你想获得一点点发烧友,你也可以覆盖这样的getter方法:
-(NSMutableArray *)events
{
if (_events == nil) {
_events = [[NSMutableArray alloc] init];
}
return _events;
}
如果你这样做而不是在init方法中,那么你的变量只有在实际需要时才会被启动,这在某些情况下会很方便。
请记住,你仍然需要在dealloc方法中发布。
答案 2 :(得分:1)
你需要先分配内存。
答案 3 :(得分:0)
问题是您需要为数组分配内存..
_events = [[NSMutableArray alloc] init]; &安培;然后将对象添加到此数组中。
&安培;也不要忘记在适当的地方发布这个数组,否则会造成很多崩溃问题。
_events = nil; [_events release];
如果你想访问吸气剂和放大器然后是setter属性&amp;那么只做
@property(nonatomic,retain)NSMutableArray * events; &安培;合成数组,否则它只会对你有用。