Objective-C description
에서 디버깅에 도움을주기 위해 클래스에 메소드를 추가 할 수 있습니다 .
@implementation MyClass
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p, foo = %@>", [self class], foo _foo];
}
@end
그런 다음 디버거에서 다음을 수행 할 수 있습니다.
po fooClass
<MyClass: 0x12938004, foo = "bar">
Swift와 동등한 기능은 무엇입니까? Swift의 REPL 출력이 도움이 될 수 있습니다.
1> class MyClass { let foo = 42 }
2>
3> let x = MyClass()
x: MyClass = {
foo = 42
}
그러나 콘솔에 인쇄하기 위해이 동작을 무시하고 싶습니다.
4> println("x = \(x)")
x = C11lldb_expr_07MyClass (has 1 child)
이 println
출력 을 정리하는 방법이 있습니까? Printable
프로토콜을 보았습니다 .
/// This protocol should be adopted by types that wish to customize their
/// textual representation. This textual representation is used when objects
/// are written to an `OutputStream`.
protocol Printable {
var description: String { get }
}
나는 이것이 자동으로 "보일"것이라고 생각 println
했지만 그것은 사실이 아닙니다.
1> class MyClass: Printable {
2. let foo = 42
3. var description: String { get { return "MyClass, foo = \(foo)" } }
4. }
5>
6> let x = MyClass()
x: MyClass = {
foo = 42
}
7> println("x = \(x)")
x = C11lldb_expr_07MyClass (has 1 child)
대신 명시 적으로 설명을 호출해야합니다.
8> println("x = \(x.description)")
x = MyClass, foo = 42
더 좋은 방법이 있습니까?