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 |