사용자 정의 클래스에서 재정의 할 수있는 방법이 있습니까?
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
호출됩니다.
기본 클래스 NSObject
는 description
구현되었지만 상당히 중요합니다. 개체의 주소 만 표시합니다. 그렇기 때문에 description
특히 description
코드 에서 메소드 를 사용하는 경우 정보를 얻으려는 클래스에서 구현하는 것이 좋습니다 . description
코드에서 사용하는 경우 구현 debugDescription
하는 debugDescription
것이 좋으며 더 자세하게 작성하는 것이 좋습니다 .
답변
사용 가능한 음성이 출력됩니다.
NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));