NSLOG와 함께 사용하기 위해 "TOSTRING ()"의 대상 C 동등한 것은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1104746

  •  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] ));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top