2011-05-10 6 views
0

여러보기가있는 프로그램을 작성 중입니다. 뷰 사이에 날짜 변수를 전달하고 싶습니다. extern NSDate *chooseDate을 사용하여 전역 변수를 만들었습니다. 뷰 중 하나에 변수 NSDate *date을 선언합니다. 그런 다음 date = chooseDate을 설정합니다. 다음 날짜를 추가하려면 다음 코드를 사용하십시오.NSdate 관련 문제

NSDateComponents *components = [[NSDateComponents alloc] init]; 
[components setDay:(int)daycount]; 
date = [calendar dateByAddingComponents:components toDate:date options:0]; 

문제는 chooseDateNSDate로 인식되지 않는 것 같다. 코드가 date = [calendar ...]에서 중단됩니다. 나는 이것이 왜 일어나고 있는지에 관해서 분실하고있다. 내가 분명히 설명하기를 바란다. 어떤 아이디어?

+0

속성 (?)의 '날짜'코드를 표시 할 수 있습니까? – FreeAsInBeer

+0

날짜 = 선택 날짜; \t \t NSDateComponents * 구성 요소 = [[NSDateComponents alloc] init]; [구성 요소 setDay : (int) daycount]; date = [calendar dateByAddingComponents : 구성 요소 toDate : 날짜 옵션 : 0]; \t dateComponents = [calendar components : unitFlags fromDate : date]; 년 = [dateComponents year]; month = [dateComponents month]; day = [날짜 구성 요일]; 시간 = [날짜 구성 시간]; min = [dateComponents 분]; \t NSDateFormatter * formatter = [[[NSDateFormatter alloc] init] autorelease]; [formatter setDateStyle : NSDateFormatterLongStyle]; [showDate setText : [formatter stringFromDate : date]]; – tombuarts

+0

형식에 대해 죄송합니다. 객관적인 코드의 코드처럼 보이게 만드는 방법을 기억하지 못합니다. – tombuarts

답변

0

chooseDate = [datePicker date];chooseDate = [[datePicker date] copy];으로 변경하면 작동하는 것 같습니다. 그렇다면 나머지는 꽤 많은 설명이 있어야합니다.

+0

늦게 응답 해 주셔서 유감스럽게 생각합니다. 당신이 말한대로 "사본"을 사용하여 문제를 고쳤습니다, 정말 고마워요. 이전에 사용한 모든 다른 유형의 코딩에서 하나의 변수를 다른 변수와 동일하게 설정하면 변수의 정확한 사본이 항상 만들어집니다 (예 : choosedate = date, 둘 다 NSDate로 정의 된 경우). 이 문제는 날짜 복사와 관련이 있습니까? 아니면 한 변수를 다른 변수와 같게 설정해야 할 때 항상 "복사"해야합니까? – tombuarts

+0

문제는'[datePicker date]'는 자동 회수 객체를 반환합니다. 즉, 호출 된 메소드 종료가 종료되면 객체가 해제됩니다.'date = [calendar dateByAddingComponents : components toDate : date options : 0];에서 이것을 호출하려고하면 날짜 포인터가 null을 가리 키거나 메모리 주소가 다른 객체에 할당되므로 오류가 항상 발생하는 것은 아닙니다. 간단한 충돌, 때로는 스택에 이상한 메시지가 나타납니다. 'copy'에 대한 설명은 원본 개체가 릴리스 된 경우에도 사본을 가지고 사용할 수 있다는 것입니다. –

+0

감사합니다. 그 설명이 도움이됩니다. 스택에 이상한 메시지가 나타 났으며 무엇을 만들지 몰랐습니다. – tombuarts

0

chooseDateautoreleased 인스턴스로 설정 중입니다. 그것을 사용하려고 할 때 존재한다고 확신합니까? retain해야 할 수도 있습니다.

+0

확인했습니다. 그것은 "date = chooseDate"를 설정할 때 분명히 존재합니다. 코드 줄을 제거하면 "date = [calendar ..]"프로그램이 정상적으로 실행됩니다. – tombuarts