美文网首页
iOS中代理的使用

iOS中代理的使用

作者: 敌敌味丶 | 来源:发表于2018-04-12 14:18 被阅读0次

1.创建代理协议
2.在要传值的类中创建一个该代理的属性

//1
#import <Foundation/Foundation.h>

@protocol Delegate<NSObject>
- (void)number1:(NSInteger)number1 AddNumber2:(NSInteger)number2;
@end

//2
#import <UIKit/UIKit.h>
@interface SecondViewController : UIViewController

@property (nonatomic,weak) id<Delegate> delegate;

@end
  1. 在需要接收值和实现该协议的类中遵从代理协议
#import "ViewController.h"
#import "SecondViewController.h"

//3-1 遵从代理协议
@interface ViewController ()<Delegate>

@end

@implementation ViewController
 
 - (void)present{
    SecondViewController *secondVC = [[SecondViewController   alloc] init];
    secondVC.delegate = self; //3-2 设置当前对象为该代理
    [self presentViewController:secondVC animated:YES completion:nil];
}

//3-3  使用传入的值 实现代理协议方法
- (void)number1:(NSInteger)number1 AddNumber2:(NSInteger)number2
{
NSLog(@"The result = %ld",number1 + number2);
}
  1. 设置并调用代理协议方法
#import "SecondViewController.h"
@interface SecondViewController ()
@end

@implementation SecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
   //4 调用代理方法
    [self.delegate number1:2 AddNumber2:5];

}

需要注意的是代理的修饰词:
若用strong:该对象强引用delegate,外界不能销毁delegate对象,会导致循环引用。

若用assing:采用assign修饰代理时,是指针赋值,没有引用计数操作,当页面销毁时这个对应的代理地址并没置为nil,从而导致成为了一个野指针,然后在调用方法时便会产生崩溃;而weak不会产生野指针。

若用weak:指明该对象并不负责保持delegate这个对象,delegate这个对象的销毁由外部控制。

相关文章

  • iOS开发---图解代理

    什么是代理? 代理(Delegate)是iOS开发中的一种重要的消息传递方式,是iOS开发中普遍使用的通用设计模式...

  • 分析移动端APP的网络请求

    为了方便,本文以 iOS 系统来进行演示。 使用代理 移动操作系统中都有可以设定系统代理的设置,比如在 iOS 中...

  • Delegate的基本使用

    代理的基本使用 代理是一种通用的设计模式,在iOS中对代理设计模式支持的很好,有特定的语法来实现代理模式,OC语言...

  • iOS之代理笔记

    代理的基本使用 代理是一种通用的设计模式,在iOS中对代理设计模式支持的很好,有特定的语法来 实现代理模式,OC语...

  • 设计模式-代理

    代理的基本使用 代理是一种通用的设计模式,在iOS中对代理设计模式支持的很好,有特定的语法来实现代理模式,OC语言...

  • iOS 代理设计模式

    转自 <简书 — 刘小壮> 代理的基本使用 代理是一种通用的设计模式,在iOS中对代理设计模式支持的很好,有特定...

  • UITableviewCell复用机制

    前言 UITableview在iOS中的使用频率是非常高的.通常,我们只需要通过设置代理,并且在代理方法table...

  • UITextView

    TextView的属性使用和代理方法使用 iOS开发中遇到要写textview的提示文字 写这些东西要用到tex...

  • MVC设计模式:1-代理(delegate)协议

    在iOS开发中,经常使用到代理(委托)协议以及数据源协议,所谓代理(委托)协议,通俗来讲,顾名思义就是委托别人办事...

  • Day Three UITableView的使用总结

    在iOS开发中使用最为平凡的控件要数UITableView了,在swift中,UITableView和OC的代理方...

网友评论

      本文标题:iOS中代理的使用

      本文链接:https://www.haomeiwen.com/subject/akvxkftx.html