본문 바로가기

교육/Objective-C

[Objective-C] protocol

1. protocol

대표적으로 프로토콜 사용하는 것이 delegate

delegate는 1:1 객체 간의 강한 결합

NotificationCenter는 중간에  notificationCenter가 있기 때문에 유연하다. 1:N의 관계를 가진다.


2. 샘플 코드

@class LocationManager;

@protocol LocationManagerDelegate <NSObject>

-(void) updateLocation;

-(void) failToUpdate;

@end


@interface LocationManager:NSObject

@property(nonatomic,assign) id delegate;

-(void)start;

@end


@implementation LocationManager

-(void)start

{

    //gps사용 위치 구함

    BOOL gps = YES;

    if(gps)

        [_delegate updateLocation];

    else

        [_delegate failToUpdate];

}


@end


@interface Car:NSObject<LocationManagerDelegate>

-(void) updateLocation;

-(void) failToUpdate;

@end


@implementation Car

-(void) updateLocation

{

    NSLog(@"updateLocation");

}

-(void) failToUpdate

{

    NSLog(@"failToUpdate");

}

@end

int main()

{

    LocationManager* lm = [[LocationManager alloc] init];

    

    Car* c = [[Car alloc] init];

    lm.delegate =c;

    [lm start];

    [lm release];

    [c release];

    return 0;

}

'교육 > Objective-C' 카테고리의 다른 글

[Objective-C] c function pointer  (0) 2016.08.01
[Objective-C] category  (0) 2016.08.01
[Objective-C] kvo(key value observing)  (0) 2016.08.01
[Objective-C] kvc(key value coding)  (0) 2016.08.01
[Objective-C] block  (0) 2016.07.26