2013-05-27 4 views
-1

내 응용 프로그램에는 스토리 보드가 있고 날짜 선택 도구가있는 컨트롤러를 보는 데 많은 도움이됩니다.NSDate를 포인터로 전달하는 방법은 무엇입니까?

NSDate을 포인터로 사용하여이 NSDate 개체에 값을 유지하려면 어떻게해야합니까?

이제 내 AppDelegate 속성에는 NSDate가 많이 있습니다. 그리고 prepareForSegue에 나는 유지 속성으로 컨트롤러를 볼 수있는 권한 NSDate을 통과 :

- (IBAction)dateChanged:(id)sender{ 
    if (date) { 
     date = datePicker.date; 
    } 
} 

을하지만 그것은 작동하지 않습니다 : 선택이 이루어

@property (retain, nonatomic) NSDate * date; 

후,이 속성에 값을 할당합니다.

내가 틀렸어?

답변

3

Objective-C 언어에서는 설명하는 것을 참조로 전달이라고합니다. 객체 유형의 변수는 이미 포인터이므로 포인터 포인터 유형이 필요합니다. 이를 구현하려면 NSDate **dateReference을 날짜 선택 컨트롤러에 전달합니다. 컨트롤러가 날짜를 선택하면 *dateReference = pickedDate을 설정합니다.

하지만 이는 일반적으로 선택 날짜를 거절하는 경우입니다. 더 나은 방법은 날짜 선택을 지원하는 프로토콜을 사용하여 날짜 선택 컨트롤러에서 대리자를 사용하는 것입니다.

또는이 단순한 경우 블록 기반 API를 사용하는 것이 더 좋습니다. 날짜 선택기 컨트롤러가 클라이언트 컨트롤러가 날짜 선택기를 표시하기 전에 설정하는 completionBlock을 가져옵니다.

1

보다는 :

date = datePicker.date 

사용 :

self.date = datePicker.date 

는 마찬가지로 self.date 참조. 자세한 내용은 Setting an Objective-C class property without using a self reference을 참조하십시오.

+0

이것은 여전히 ​​클라이언트 컨트롤러의 것이 아닌 날짜 선택기 컨트롤러에서만 ivar를 설정합니다. –

+0

아, 그래. 나는 그 때 질문을 오해했다. –

관련 문제