[objective-c] NSLog와 함께 사용하기 위해“toString ()”과 동일한 Objective-C는 무엇입니까?

사용자 정의 클래스에서 재정의 할 수있는 방법이 있습니까?

      NSLog(@"%@", myObject) 

호출되면 객체의 필드 (또는 내가 중요하다고 생각하는 것)를 인쇄합니까? Java의 Objective-C와 동등한 것을 찾고 있다고 생각 toString()합니다.



답변

다음 description과 같이 선언 된 인스턴스 메소드입니다.

- (NSString *)description

다음은 구현 예입니다 (grahamparks 덕분에).

- (NSString *)description {
   return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}


답변

이것을 @implementation포토 클래스에 추가하십시오 .

- (NSString *)description {
   return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}


답변

NSObject의 설명 메소드를 대체 할 수 있습니다.

- (NSString *)description

로깅의 주제에 대해서는 Objective-C에서 더 나은 로깅을 위해이 블로그 게시물 을 추천합니다 .


답변

사용할 수있는 두 가지 기능이 있습니다.

- (NSString*)description

객체를 IE 매개 변수로 배치하면 표시됩니다 NSLog. 다른 설명 기능은 다음과 같습니다.

- (NSString*)debugDescription

po anInstanceOfYourClass디버그 명령 창에서 할 때 호출됩니다 . 클래스에 debugDescription함수 가 없으면 description호출됩니다.

기본 클래스 NSObjectdescription구현되었지만 상당히 중요합니다. 개체의 주소 만 표시합니다. 그렇기 때문에 description특히 description코드 에서 메소드 를 사용하는 경우 정보를 얻으려는 클래스에서 구현하는 것이 좋습니다 . description코드에서 사용하는 경우 구현 debugDescription하는 debugDescription것이 좋으며 더 자세하게 작성하는 것이 좋습니다 .


답변

사용 가능한 음성이 출력됩니다.

    NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));


답변