UIViewController 하위 클래스 (MyViewController)가 있습니다.self.delegate = self를 설정하는 것이 좋지 않은 디자인입니까
MyViewController.h
@protocol TargetChangedDelegate
-(void) targetChanged;
@end
@interface MyViewController
@property (weak) id<TargetChangedDelegate> targetChangedDelegate;
-(void) doSomethingOnYourOwn;
@end
특정 조건에 MyViewController의 인스턴스가 위임 또는 그 자체를 설정하기로 결정할 수있다 인스턴스화하는 클래스를 기반 MyViewController.m
@implementation MyViewController <TargetChangedDelegate>
-(void) doSomethingOnYourOwn
{
// DO some stuff here
// IS THIS BAD ??
self.targetChangedDelegate = self;
}
-(IBAction) targetSelectionChanged
{
[self.targetChangedDelegate targetChanged];
}
-(void) targetChanged
{
// Do some stuff here
}
@end
. 위의 코드를 참조
Foo.m
@property(strong) MyViewController *myVC;
-(void) configureViews
{
self.myVC = [[MyViewController alloc] init];
[self.view addSubview:self.myVC];
if (someCondition)
{
self.myVC.targetChangedDelegate = self;
}
else
{
[self.myVC doSomethingOnYourOwn]
//MyViewController sets itself as the targetChangedDelegate
}
}
, 나는 다음과 같은 질문을했다 : 그것은 말할 MVC/위임 디자인 패턴의 위반 (또는 나쁜 디자인)인가 :
self.delegate = self;
일종의 배우 모델 표현이 아닌가요? – ntohl
그것의 나쁘지 않은, 그것의 잘못. 위임자가없는 메서드를 쉽게 호출 할 수있는 경우 동일한 클래스의 대리자를 정의 할 때 대리자를 자체로 설정해야하는 이유는 무엇입니까? 다른 클래스를 다루는 영역은 같지만 같은 클래스에서는 의미가 없습니다. – iphonic
이 작업을 통해 달성하고자하는 것이 무엇인지 확실하지 않으면'[myVC doSth] '로 함수를 쉽게 호출 할 수 있습니다 – Tj3n