아이폰어플개발정보2011. 3. 12. 17:14

 

작업을 하다보면 객체의 멤버 변수 값을 확인하고 싶을 때가 있다.

이럴때 유용하게 사용할 수 있는 메소드가 (NSString *)description 함수이다.


NSObject 의 메소드인 description 함수는 다음과 같이 정의 되어 있다.

 

 

description

Returns a string that describes the contents of the receiver. (required)

- (NSString *)description

Return Value

A string that describes the contents of the receiver.

Discussion

The debugger’s print-object command indirectly invokes this method to produce a textual description of an object.

Availability

  • Available in Mac OS X v10.0 and later.

Declared In

NSObject.h 

 

  

위의 설명에서 볼 수 있듯이 이 메소드는 NSLog 와 같이 객체를 출력하는 메소드에서 자동 호출되어 스트링 형태의 설명을 제공한다.

이것은 override 하지 않은 채로 객체에다 쓰게 되면 다음과 같이 객체의 주소 값을 리턴한다.


 

testAppObject *obj; obj = [[testAppObject alloc] init]; NSLog(@"%@", obj); 

<코드>


<결과>


이 메소드를 활용하면 객체의 값을 확인해 볼 수가 있다.

예를 들어 다음과 같은 클래스의 객체가 있다고 하자.

 

@interface Problem : NSObject {

    NSInteger type;

    NSString title;    

    NSInteger answer;

} 

  

이 객체의 type, title, answer 의 값을 알고 싶을 때, description 메소드를 다음과 같이 수정하면 된다.


- (NSString *)description {

    return [NSString stringWithFormat:@"%d %@ %d", type, title, answer];

} 

   

위의 경우 problem 클래스 객체를 만들어 NSLog 를 이용해 출력해보면 주소 값이 아닌 멤버 변수들의 값이 츨력 될 것이다.





출처 : http://blog.daum.net/_blog/hdn/ArticleContentsView.do?blogid=0Xfhi&articleno=21&looping=0&longOpen=
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 10. 12. 23:52
[아이폰 앱 개발] Overriding NSObject Description Method

No doubt NSLog is your friend, I use it frequently to print messages to the console during development. Actually, I use a variation of the NSLog that prints messages to the console sans date, time and object information, you can read about my approach here: Yet Another Debug Output (NSLog Replacement)

Posted by 오늘마감

댓글을 달아 주세요

오브젝트C2010. 10. 12. 04:44
[objective-c] Overriding NSObject Description Method

Overriding NSObject Description Method

Posted by 오늘마감

댓글을 달아 주세요