NSLOG와 함께 사용하기 위해 "TOSTRING ()"의 대상 C 동등한 것은 무엇입니까?
-
12-09-2019 - |
문제
내 사용자 정의 클래스에서 재정의 할 수있는 방법이 있습니까?
NSLog(@"%@", myObject)
호출되면 내 객체의 필드 (또는 내가 중요하다고 생각되는 것)를 인쇄할까요? 나는 Java 's와 동등한 목표를 찾고있는 것 같아요 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
이것은 당신이 당신의 객체를 넣을 때, 즉 매개 변수를 NSLog
. 다른 설명 함수는 다음과 같습니다.
- (NSString*)debugDescription
이것은 당신이 할 때 호출됩니다 po anInstanceOfYourClass
디버그 명령 창에서. 수업에 수업에 a가 없다면 debugDescription
기능을하고 그냥 description
호출됩니다.
기본 클래스 NSObject
가지고 있습니다 description
구현되었지만 상당히 맨손입니다. 객체의 주소 만 표시됩니다. 이것이 제가 구현하는 것이 좋습니다 description
모든 클래스에서는 정보를 얻으려고합니다. 특히 사용하는 경우 description
코드의 메소드. 사용하는 경우 description
코드에서 구현하는 것이 좋습니다 debugDescription
또한, 또한 debugDescription
더 많은 장점.
이것은 사용 가능한 목소리를 출력합니다.
NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));