PDA&Mobile2011/02/23 10:10
* 본 포스트의 내용은 MissFlash가 학습용도로 정리한 것입니다. 내용은 정기적으로 업데이트되니 퍼가기보다는 링크나 트랙백을 이용해주시면 감사하겠습니다.

일반적으로, 상위 클래스에서 하위 클래스의 메소드를 실행하는데는 어려움이 없지만 하위 클래스에서 상위 클래스의 메소드를 실행할 때는 약간의 테크닉이 필요합니다. 이번 포스트에서 소개할 프로토콜 & 델리게이트 구문이 바로 그 주인공이죠. 물론, 최상위 계층의 앱 델리게이트를 이용해도 같은 효과를 볼 수 있지만... 실행하려는 메소드가 특정 클래스에 국한될 경우일 때는 프로토콜 & 델리게이트 구문이 더욱 효과적이라고 할 수 있습니다.

아래는 Planner S를 만들면서 실제 사용한 코드 중 일부를 정리한 것인데요... 코드중 빨간색 부분을 중점적으로 살펴보시면 되며 간단한 설명은 아래를 참고하시기 바랍니다.
  • 상위 클래스 : ShotView.h, ShotView.m
  • 하위 클래스 : ShotMemberList.h, ShotMemberList.m
  • 상위 클래스에 하위 클래스의 델리게이트를 추가 : ShotFollowDelegate
  • 상위 클래스에 하위 클래스의 프로퍼티 추가(반드시 필요한 것은 아님) : shotMemberList
  • (상위 클래스에) 하위 클래스에서 실행하고 싶은 메소드 추가 : - (void) refreshFollow:(NSString *)type;
  • 하위 클래스 인스턴스의 delegate 속성 설정 : shotMemberList.delegate = self;
  • 하위 클래스 인스턴스를 release 하지 말것!
  • 하위 클래스에 프로토콜 및 메소드 선언 : @protocol ShotFollowDelegate <NSObject>; - (void) refreshFollow:(NSString *)type; @end
  • 하위 클래스에 delegate 프로퍼티 추가 : id<ShotFollowDelegate> delegate;
  • 하위 클래스에서 delegate 프로퍼티를 통해 원하는 메소드 실행 : [self.delegate refreshFollow:@"YES"];

ShotView.h
#import <UIKit/UIKit.h>
#import "ShotMemberList.h"

@ interface ShotView : UIViewController <ShotFollowDelegate> {
ShotMemberList* shotMemberList;
}
@ property (nonatomic, retain) ShotMemberList* shotMemberList;
- (void) refreshFollow:(NSString *)type;
@ end

ShotView.m
#import "ShotView.h"

@ implementation ShotView
@ synthesize shotMemberList;

- (void) refreshFollow:(NSString *)type{
    // Codes are here...
}

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    shotMemberList = [[ShotMemberList alloc] init];
    shotMemberList.delegate = self;
    [self.navigationController pushViewController:shotMemberList animated:YES];

    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
}

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
}

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)dealloc {
    // Delegate/Protocol 사용시 인스턴스를 release 하면 안됨
    //[shotMemberList release];
    [super dealloc];
}

@ end

ShotMemberList.h
#import <UIKit/UIKit.h>

@ protocol ShotFollowDelegate <NSObject>;
- (void) refreshFollow:(NSString *)type;
@ end

@ interface ShotMemberList : UIViewController {
    id<ShotFollowDelegate> delegate;
}
@ property (nonatomic, assign) id<ShotFollowDelegate> delegate;

@ end

ShotMemberList.m
#import "ShotMemberList.h"

@ implementation ShotMemberList
@ synthesize delegate;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [self.delegate refreshFollow:@"YES"];
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
}

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)dealloc {
    [delegate release];
    [super dealloc];
}

@ end
저작자 표시 비영리 변경 금지

이 글은 새로운 정보가 추가될 때마다 업데이트됩니다. 추천으로 아래 숫자에 1을 더해보세요. :)
RSS구독을 하시면 포스트를 배달해 드립니다. ▷ 한RSS 구독하기, 구글리더 구독하기

TRACKBACK http://blog.missflash.com/trackback/682 관련글 쓰기

  1. spiderman unlimited hack  삭제

    2014/10/05 00:48TRACKBACK FROM spiderman unlimited hack

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  2. legion of heroes hack  삭제

    2014/10/17 01:35TRACKBACK FROM legion of heroes hack

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  3. not fake  삭제

    2014/10/19 02:36TRACKBACK FROM not fake

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  4. My website  삭제

    2014/10/31 03:43TRACKBACK FROM My website

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  5. how to friend zone  삭제

    2014/11/09 18:03TRACKBACK FROM how to friend zone

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  6. injury lawyer  삭제

    2014/11/09 20:49TRACKBACK FROM injury lawyer

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  7. auto accident lawyer  삭제

    2014/11/09 21:37TRACKBACK FROM auto accident lawyer

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  8. junk car parts  삭제

    2014/11/10 03:55TRACKBACK FROM junk car parts

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  9. cash for junk cars  삭제

    2014/11/10 06:08TRACKBACK FROM cash for junk cars

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  10. sell junk cars  삭제

    2014/11/10 07:49TRACKBACK FROM sell junk cars

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  11. scrap car prices  삭제

    2014/11/10 18:00TRACKBACK FROM scrap car prices

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  12. junked cars  삭제

    2014/11/10 20:52TRACKBACK FROM junked cars

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  13. salvage cars  삭제

    2014/11/11 00:33TRACKBACK FROM salvage cars

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  14. car accident farmville va  삭제

    2014/11/11 02:02TRACKBACK FROM car accident farmville va

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  15. how to improve eyesight naturally eye exercises  삭제

    2014/11/11 06:25TRACKBACK FROM how to improve eyesight naturally eye exercises

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  16. symptoms of a panic attack treatment  삭제

    2014/11/11 08:30TRACKBACK FROM symptoms of a panic attack treatment

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  17. link web site  삭제

    2014/11/11 10:35TRACKBACK FROM link web site

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  18. buy used junk cars  삭제

    2014/11/11 12:47TRACKBACK FROM buy used junk cars

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  19. sell car for salvage  삭제

    2014/11/12 02:39TRACKBACK FROM sell car for salvage

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  20. junk car parts  삭제

    2014/11/12 11:12TRACKBACK FROM junk car parts

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  21. best applicant tracking system  삭제

    2014/11/12 13:45TRACKBACK FROM best applicant tracking system

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  22. sell my car in  삭제

    2014/11/12 18:41TRACKBACK FROM sell my car in

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  23. salvage cars  삭제

    2014/11/12 20:43TRACKBACK FROM salvage cars

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  24. salvage auto sales  삭제

    2014/11/13 05:06TRACKBACK FROM salvage auto sales

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  25. cookie jam hack generator  삭제

    2014/11/16 20:24TRACKBACK FROM cookie jam hack generator

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  26. pay day loans  삭제

    2014/11/19 09:58TRACKBACK FROM pay day loans

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  27. short term loans  삭제

    2014/11/26 20:43TRACKBACK FROM short term loans

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  28. bad credit loans guaranteed approval  삭제

    2014/11/29 06:27TRACKBACK FROM bad credit loans guaranteed approval

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  29. installment loans  삭제

    2014/12/09 21:44TRACKBACK FROM installment loans

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

  30. Romantic Sms  삭제

    2014/12/20 04:12TRACKBACK FROM Romantic Sms

    [ MissFlash - Digital Life ] :: [팁] iOS Protocol & Delegate(프로토콜 & 델리게이트) 구문 정리

댓글을 달아 주세요

  1. Favicon of http://www.socialfansgeek.com/ BlogIcon Buy youtube views cheap

    관리자의 승인을 기다리고 있는 댓글입니다

    2012/12/06 23:57 [ ADDR : EDIT/ DEL : REPLY ]
  2. Favicon of http://www.bestessaywritingservice.org/ BlogIcon best writing service

    관리자의 승인을 기다리고 있는 댓글입니다

    2012/12/09 01:28 [ ADDR : EDIT/ DEL : REPLY ]
  3. Favicon of http://www.michaelkorshandbagsx.com/ BlogIcon michael kors

    관리자의 승인을 기다리고 있는 댓글입니다

    2012/12/24 21:32 [ ADDR : EDIT/ DEL : REPLY ]
  4. Favicon of http://www.investment-realestate.com.au BlogIcon investment

    관리자의 승인을 기다리고 있는 댓글입니다

    2012/12/27 23:06 [ ADDR : EDIT/ DEL : REPLY ]
  5. Favicon of http://www.sapphirecig.com BlogIcon smokeless cigarettes

    관리자의 승인을 기다리고 있는 댓글입니다

    2013/01/09 19:51 [ ADDR : EDIT/ DEL : REPLY ]
  6. Favicon of http://www.aussiecarloans.com.au BlogIcon aussiecarloans

    관리자의 승인을 기다리고 있는 댓글입니다

    2013/01/16 19:39 [ ADDR : EDIT/ DEL : REPLY ]