簡體   English   中英

如果屬性和synthesize方法已包含NSMutableArray,我是否需要手動創建它? (附加代碼)

[英]do I need to manually create a NSMutableArray if it is already covered by a property & synthesize method? (code attached)

如果屬性和synthesize方法已包含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

是。

@synthesize自動創建在引用self.events時使用的getter / setter方法。 它不會為您分配(或釋放)_events對象。

您可以在init方法中創建它,但是如果您想稍微想一點,還可以重寫getter方法,如下所示:

-(NSMutableArray *)events
{
    if (_events == nil) {
        _events = [[NSMutableArray alloc] init];
    }
    return _events;
}

如果以這種方式而不是在init方法中執行此操作,則變量僅在實際需要時才被初始化,這在某些情況下會很方便。

請記住,您仍然需要在dealloc方法中釋放。

您需要先分配內存。

問題是您需要為數組分配內存。

_events = [[NSMutableArray alloc] init]; &然后將對象添加到此數組。

並且也不要忘記在適當的位置釋放此數組,否則會造成很多崩潰問題。

_events = nil; [_events版本];

如果要訪問getter和setter屬性,則&然后僅執行

@property(非原子,保留)NSMutableArray *事件; &合成數組,否則簡單地它將為您工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM