1

特定の日付で nsdate を初期化し、すべてのコードでそれを使用したいのですが、これを行っています:

.h

@property (nonatomic, retain) NSDate *myDate;

.m

@synthesize myDate;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"yyyy-MM-dd"];

        myDate = [formatter dateFromString:@"2050-01-01"];
    } 
    return self;
}

次に、コードで、次のように nsdate を読み取った場合:

NSLog(@"%@",myDate);

または、isEqualToDate を使用する場合は、exc_bad_access を渡してください

なぜ?

4

1 に答える 1

3

プロパティとして変数にアクセスするには、次のように呼び出す必要があります。

self.myDate = [formatter dateFromString:"2050-01-01"];

それ以外の場合は、それを格納している変数に直接代入を行っているだけです。オブジェクトを保持するために、渡されたオブジェクトでへの呼び出しを使用するときに呼び出されるretain、自動生成された関数内でプロパティを宣言する場合。setMyDateself.myDate = someDate;retain

一般に、自動生成されたメソッドを介して、またはself.myDate参照カウント関数を適切に使用するためのメソッドを介してのみ、プロパティにアクセスすることをお勧めします。

于 2012-05-29T13:13:32.157 に答える