Var виден в ViewDIdLoad, но не где-то еще - PullRequest
0 голосов
/ 02 мая 2011

Я программирую одно приложение для iphone, и есть проблема; Я могу использовать переменную NSDate в методе viewDidLoad, но не где-нибудь еще! Как это можно сделать? как это можно решить?

вот мои важные строки:

@interface GraphNavController : UINavigationController {

IBOutlet UIImage *image;
CGPoint gestureStartPoint;
IBOutlet UISegmentedControl *segmentedControl;

NSDateComponents *dateComponents;
NSCalendar *gregorian;

@public
NSDate *date;   

}

А в коде реализации ...

- (void)viewDidLoad {
[super viewDidLoad];

date = [[NSDate alloc] init];

//  Set the GMT @ 2
gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone timeZoneWithName:@"GMT+2"]];

dateComponents = [[NSDateComponents alloc] init];
[dateComponents setMonth:11];

[dateComponents setMonth:11];// tests ^^
date = [gregorian dateByAddingComponents:dateComponents toDate:date options:0];

NSLog(@"-->  Date : %@ - DComponents's : %d-%d-%d - gregorian : %@",date, [dateComponents day], [dateComponents month], [dateComponents year], [gregorian calendarIdentifier]); // is running here completely well

}

И переменная даты скрыта в любом другом методе этого класса ...

Я уже пытаюсь поместить эту переменную в @public, @private, @package, ... но ничего не работает.

Приложение убивает без описания проблемы! Мне просто нужно поместить журнал даты где-нибудь еще, кроме viewOnLoad, и появляется сбой ...

1 Ответ

1 голос
/ 02 мая 2011

dateByAddingComponents:toDate:options: возвращает автоматически освобожденный объект. Вы должны сохранить это. Если вы используете свойство:

@property(retain,nonatomic) NSDate *date;

тогда вы можете сделать это:

self.date = [gregorian dateByAddingComponents:dateComponents toDate:[NSDate date] options:0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...