9. 프로젝트에서 Block 대체 에이전트 방법을 이용하여 알림 실현
프록시 방법의 단점:
일반적으로 우리는 사용자 정의 도구 클래스나 보기 클래스에서 일부 조작을 한 후에 보기 컨트롤러에 알림을 해야 한다. 우리는 에이전트를 통해 실현할 수 있다.일반적인 실현 방법은 먼저 프로토콜을 정의한 다음에 에이전트 속성을 성명한 다음에 대응하는 방법에서 에이전트 대상을 호출하는 것이다.그리고 보기 컨트롤러에 가서 프로토콜을 준수한다고 설명하고 해당 클래스에 대응하는 대상의 에이전트를 보기 컨트롤러로 설정한 다음에 대응하는 프로토콜의 에이전트 방법을 실현한다.이렇게 하면 알림 보기 컨트롤러를 완성할 수 있다.그러나 이렇게 하는 절차가 너무 많아서 비교적 번거롭다.다음은 Block을 이용하여 알림을 완성하는 방법을 소개합니다.
Block 사용:
먼저 사용자 정의 클래스에서 Block 유형의 속성을 설명한 다음 전달할 매개 변수를 Block의 매개 변수로 설정합니다. 다음은 구체적인 실례를 통해 설명합니다.
4
@interface CYLView : UIView
@property (nonatomic, copy) void (^CYLViewBlock)(UIButton *btn);
@end
먼저 보기 클래스를 사용자 정의합니다. 이 클래스는 Block 속성을 가지고 있습니다.이 종류는xib설명view를 사용합니다. 위에 단추가 있습니다. 단추를 눌렀을 때 보기 컨트롤러에 클릭한 단추를 출력하도록 알립니다.이 클래스의 구현 파일은 다음 그림과 같습니다.
4
@implementation CYLView
- (IBAction)btnClick:(UIButton *)sender
{
if (self.CYLViewBlock) self.CYLViewBlock(sender);
}
@end
버튼을 눌렀을 때 Block 속성에 값이 있는지 판단하고 있으면 이 단락의 Block을 실행한다뷰 컨트롤러의 코드는 다음과 같습니다.
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
CYLView *view = [[[NSBundle mainBundle]loadNibNamed:@"CYLView" owner:nil options:nil]lastObject];
view.frame = CGRectMake(0, 100, 300, 300);
view.CYLViewBlock = ^(UIButton *btn){
NSLog(@"%@",btn);
};
[self.view addSubview:view];
}
@end
버튼을 누르면 입력할 코드를 Block에 넣으면 됩니다.이 Block에서self를 사용할 때 약한 인용으로 표시해야 합니다. 그렇지 않으면 순환 인용을 초래할 수 있습니다.구체적으로는 제9편 일지를 참조하시오.
이렇게 하면 통지를 실현할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
3. CSS 기본 프로퍼티프로퍼티 프로퍼티 값으로 테두리 두께 지정 가능 width/height 프로퍼티 max-width/max-height 프로퍼티 margin/padding 프로퍼티 margin 또는 padding 프로퍼티에 윗쪽, 오...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.