본문 바로가기

iOS Developement

2. 데이터를 넘겨라! 주소 찾기(alloc init, delegate)

테이블에 데이터를 보여주고 싶었서, 파싱이 이루어지는 클래쓰에서 값을 가져다가. 아래와 같이 자료를 넘겨 주었다. 




















중요한 것은 새롭게 뷰를  Alloc init 하면 새롭게 뷰가 만들어져 데이타 값이 엉뚱한 곳으로 간다는 것이이다. 


그래서 및에 델리게이트를 활용해서 값을 넘겨 주었다.  


그럼 델리게이트는 어떻게 활용하는 것일까?


Delegate는 말그대로 위임을 뜻한다. 

즉 대신 일해라 라고 시키는 것인데 아직 정확이 그 속성을 파악하진 못하겠다. 


다만 여기서는 두개의 클래쓰 사이에 주소값을 지정해 주는 방법이다. 

여기서는 parsing된 결과 값을 넘겨줄때 어디다 넘겨줄지를 알려준다. 


이렇게 주소를 지정해 주기 위해서는 다음과 같은 절차가 필요하다. 


1.델리게이트를 하나 만든다. 


//

//  ParsingDelegate.h

//  CustomCell_CoreData

//

//  Created by sdt5 on 12. 10. 17..

//  Copyright (c) 2012 tacademy. All rights reserved.

//


#import <Foundation/Foundation.h>


@protocol ParsingDelegate <NSObject>


@property (weak) id<ParsingDelegate> bookParsingDelegate;


-(void)parsingFinished:(id)result;


@end


2.값을 전달해주는 클래쓰의 헤더파일에 이를 선언한고 

@property (weak) id <ParsingDelegate> bookParsingDelegate;


구현부에

@synthesize bookParsingDelegate;


해준다.


3. 그리고 나서 메소드를 호출할때 


    //bookParsingDelegate 이용하여 주소값을 준다.

   [bookParsingDelegate parsingFinished:BookSearchResult];


이렇게 호출한다. 


4. 이제 가장 중요한 부분이다. 

그럼 위의 1,2,3은 아직 이것을 어디로 보낼지 알려 주지 않았다.

여기는 데이터를 받는 클래쓰이다. 

(즉, 델리게이트 1개 , 클래쓰 2개가 쓰인 것이다.)













위의 코드에는 파서 클래쓰에 키워드를 넘겨주기 위한 

    //키워드 넘기기 위한 과정

    AppDelegate *delegate = [UIApplication sharedApplication].delegate;


와   

어디로 넘겨줘야 할지 알기 위해 

    BookParserClass *iBookParserClass = [[BookParserClass alloc]init];

    [iBookParserClass startParsingBooks:delegate.myPass];

이렇게 지정해 주었다.


그리고 델리게이트에

    

    //델리게이트 주소값을 주고

    iBookParserClass.bookParsingDelegate =self;


이렇게 주소가 이곳이라고 선언해 준다.


신기한 것은 파서 클래쓰에게 동작 명령을 내린 메서드 안 에서 선언을 해주어야 델리게이트가 인식 된다는 것이다. 


같은 클래쓰라도 다른 곳에 이 명령어를 넣으면 인식하지 못한다.


델리게이트는 개념이 잡히는 데로 계속 포스팅 할 예정이다. (열심히 올리도록 하겠습니다. ^^)