Использование NSDate в качестве свойства дает мне EXC_BAD_ACCESS, почему? - PullRequest
0 голосов
/ 02 февраля 2011

Я добавляю NSDate в качестве указателя со свойством, и каждый раз, когда я выгружаю свое представление, оно падает с EXC_BAD_ACCESS. Я делаю (не публикую полный код):

.h

NSDate *scheduledDate;

@property (nonatomic, retain) NSDate *scheduledDate;

.m

@synthesize scheduledDate;

    - (void)dealloc {
    [super dealloc];
    [asset release];
    [passedDate release];
    [eventDate release];
    [eventName release];
}

Я ничего не сделал с указателем, но я все еще получаю EXC_BAD_ACCESS. Почему это происходит? Есть ли другой способ установить свойство для NSDate?

SORRY

Я исправил ошибку в своем коде вопроса, это была только проблема копирования и вставки, а не исправление моей проблемы, она все еще существует.

Ответы [ 4 ]

4 голосов
/ 02 февраля 2011

Вы вызываете [super dealloc] перед выпуском в вашу реализацию dealloc. Это означает, что [запланированный выпуск] освобождает некоторую несвободную память (которая больше не равна нулю).

В частности, измените порядок так, чтобы [super dealloc] был последним:

- (void)dealloc {        
    [asset release];
    [passedDate release];
    [eventDate release];
    [eventName release];

    [super dealloc];
}
1 голос
/ 02 февраля 2011

Ваш код выглядит противоречивым. Объявление @property должно быть для «NSDate scheduleDate», а не «NSString ...».

0 голосов
/ 02 февраля 2011

Ваш @property (nonatomic, retain) предназначен для «sentDate», а не «запланированного».Поскольку "scheduleDate" не создается и не сохраняется @property (nonatomic, retain), то попытка освободить его - попытка освободить то, что еще не было создано (оно не синтезируется как свойство).

0 голосов
/ 02 февраля 2011

Если вы не используете @property (nonatomic, retain) NSDate *scheduledDate;, тогда нет необходимости синтезировать scheduledDate.

Кроме того, как вы определяете значение scheduledDate? опубликуйте код, который вы используете для него .

Кроме того, опубликуйте журнал сбоя, который создает ваше приложение.

...