아이폰어플개발정보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 오늘마감

댓글을 달아 주세요

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


//사용 예

- (void)sample {

NSMutableArray *a = [NSMutableArray array];

CGPoint p = CGPointMake(5.0, 6.0);

NSDictionary *pointObject = [NSDictionary dictionaryWithCGPoint:p];

[a addObject:pointObject];

[a addObject:[NSDictionary dictionaryWithCGSize:CGSizeMake(50.0, 60.0)]];

CGRect rect = CGRectMake(20.0, 40.0, 100.0, 60.0);

[a addObject:[NSDictionary dictionaryWithCGRect:rect]];

NSLog(@"%@",a);

CGPoint point = [pointObject CGPointValue];

CGSize size = [[a objectAtIndex:1] CGSizeValue];

CGRect rect2 = [[a objectAtIndex:2] CGRectValue];

NSLog(@"point: %f,%f",point.x,point.y);

NSLog(@"size: %f,%f",size.width,size.height);

NSLog(@"rect: %f,%f,%f,%f",rect2.origin.x,rect2.origin.y,rect2.size.width,rect2.size.height);

}



출처 : http://blog.naver.com/PostView.nhn?blogId=hana_815&logNo=60120337801
Posted by 오늘마감

댓글을 달아 주세요

XCODE2011. 3. 12. 17:13

// 초기화 및 배열 넣기

NSMutableArray *arrayData;

arrayData = [NSMutableArray arrayWithCapacity:listCount];


NSString *strData = @"아이폰";

[arrayData addObject:[NSString stringWithFormat:@"%@",strData]];



// Dic 배열에 넣기

NSMutableDictionary *item = [[NSMutableDictionary alloc] init];

[item setObject:[arrToken objectAtIndex:0] forKey:@"date"];

[item setObject:[arrToken objectAtIndex:1] forKey:@"price"];

[arrayData addObject:[item copy]];



// Method

  • addObject:

    Adds the given object to the end of the array.


  • insertObject:atIndex:

    Inserts the given object at index, moving the object there previously, and all objects at higher indices, one along.


  • removeObject:

    Removes all instances of an object in the array


  • removeObjectAtIndex:

    Removes the object at the given index.


  • replaceObjectAtIndex:withObject:

    Replaces the object at index with the one supplied. Returns an error if the index is out of bounds.


  • sortUsingSelector:

    Sorts an array; see SortUsingSelector


  • removeObjectIdenticalTo:

    checks for object identity before removing an object; see NSMutableArrayRemoveObjectIdenticalTo for an example of when this is necessary



출처 : http://blog.naver.com/PostView.nhn?blogId=hana_815&logNo=60112995891
Posted by 오늘마감

댓글을 달아 주세요

XCODE2011. 3. 12. 17:13
NSMutableArray 에서 Deep copy 시  FOR 문을 이용한 Copy는 비효율적 이다 
그래서 아래의 코드를 
-deepMuCopy : (NSMutableArray*) array 
    toNewArray : (NSMutableArray*) arrayNew {

    [arrayNew removeAllObjects];//ensure it's clean

    for (int y = 0; y<9; y++) {
        [arrayNew addObject:[NSMutableArray new]];
        for (int x = 0; x<9; x++) {
                [[arrayNew objectAtIndex:y] addObject:[NSMutableArray new]];

                NSMutableArray *aDomain = [[array objectAtIndex:y] objectAtIndex:x];
                for (int i = 0; i<[aDomain count]; i++) {

                        //copy object by object
                        NSNumber* n = [NSNumber numberWithInt:[[aDomain objectAtIndex:i] intValue]];
                        [[[arrayNew objectAtIndex:y] objectAtIndex:x] addObject:n];
               }
        }
    }
}

간단하게 나타 낼 수 있다...

NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:oldArray copyItems:YES];




출처 : http://blog.naver.com/PostView.nhn?blogId=coderider&logNo=50096223938
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2011. 3. 12. 17:12
- NSArray는 다른 객체 포인터들의 목록이다.

- 자주 사용되는 메소드
- (unsigned)count -> 현재 배열의 객체의 수를 리턴한다.
- (id)objectAtIndex:(unsigned)i -> i번째 위치한 객체를 리턴한다.
- (id)lastObject -> 현재 배열의 맨 마지막 객체를 리턴한다.
- (BOOL)containsObject:(id)anObject -> 현재의 배열에 anObject오브젝트를 포함하면 YES 아니면 NO
- (unsigned)indexOfObject:(id)anObject -> 리시버에서 anObject가 있는지 가장 낮은 색인부터 검색하  여 배열의 색인 값을 리턴한다. 찾지 못하면 NSNotFound를 리턴한다.
 
NSArray *photoList =[NSArray arrayWithObjects:@"Photo 1.jpg", @"Photo 2.jpg", @"Photo 3.jpg", @"Photo 4.jpg",nil];

 
- NSMutableArray는 NSArray를 상속받았지만 객체를 삽입하고 삭제할 수 있도록 확장되었다.

- 자주 사용되는 메소드

             - (void)addObject:(id)anObject -> anObject를 리시버의 끝에 삽입한다. nil배열은 넣을 수 없다.

 - (void)addObjectsFromArray:(NSArray *)otherArray -> 매개체의 배열에 담긴 객체들을 넣는다.

 - (void)insertObject:(id)anObject atIndex:(unsigned)index -> index의 위치에 객체를 삽입한다.

             - (void)removeAllObjects -> 리시버에 포함된 모든객체를 제거한다.
             - (void)removeObject:(id)anObject -> 리시버 배열 안의 anObject를 삭제한다.
             - (void)removeObjectAtIndex;(unsigned)index -> index의 객체를 제거한다.

 


출처 : http://blog.naver.com/PostView.nhn?blogId=yesusok&logNo=50100674668
Posted by 오늘마감

댓글을 달아 주세요