代理模式有的时候也被称之为委托模式,但是实际上两者是有分别的,代理模式为另一个对象提供一个替身或占位符访问这个对象,代理对象和控制访问对象属于同一类,委托对象和对象不一定属于同一类。两者都可以控制类的访问,访问代理的方法A也就意味着访问对象的方法A,访问委托对象方法A执行的是可以是对象的方法B。从实际开发的角度看,委托属于代理模式的扩大版,并没有那么多的限制。基础知识代理模式相对比较简单,可以简单的看...
***控制层#import"ViewController.h"#import"CZKeyboardToolbar.h"@interface ViewController ()<CZKeyboardToolbarDelegate>
@property (strong, nonatomic) UIDatePicker *datepicker;
@property (weak, nonatomic) IBOutlet UITextField *textField;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.//创建datapikcersel...
前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但具体怎么做,它不关心。 当一个类要使用某一个Protocol(协议)时,都必须要遵守协议。比如有些必要实现的方法,你没有去实现,那么编译器就会报警告,来提醒你没有遵守××协议。注意,我这里说的是警告,而不是错误。对的,就算你不实现那些...
ios 代理类总结一下。今后多看看UITextViewDelegateUIToolbarDelegateUITextInputDelegateUITextFieldDelegateUIWebViewDelegateNSLayoutManagerDelegate//UIActionSheet//UIActionSheetDelegate 要放弃//UIAlertView 要放弃//UIAlertViewDelegate//优先使用preferred//UIAlertController//UIAlertControllerStyleActionSheetUIApplicationDelegateUIBarPositioningDelegateUICollectionViewDelegateUINavigationBarDelegateUINav...
程序运行的过程中,数据传输是APP开发必须考虑的要点,将数据从当前执行的控制器或者控件中传回控制器或者控件,则是称为回调。比如成为tableView代理的控制器,在某个时机中,将数据传回去tableView中,让tableView更新界面等等。就是回调的一种,成为代理-执行方法这种模式,也是cocoa Touch 中最常见的回调方式。 除了代理之前,还有KVO,通知(KVO的一种),block。这里我们主要探讨代理、通知和block的不同。 首先是大部...
1一、项目常见文件21.main.m3 * 里面有一个程序的入口:main函数4 52.Prefix.pch文件6 * pch文件中的内容 能被 项目中的其他任何文件 共享\包含\访问7 * 如果定义的内容只用在OC环境中,就必须定义在#ifdef __OBJC__和#endif之间8 93.发布程序的时候自动去除打印语句
10#ifdef DEBUG
11#define MyLog(...) NSLog(__VA_ARGS__)
12#else13#define MyLog(...)
14#endif15164.InfoPlist.strings
17 * 跟app的本地化相关(多语言版本)...
#import "Rigester_ViewController.h"#import "Rigester_ViewController.h"@interface Rigester_ViewController ()@end@implementation Rigester_ViewController
*
正向传值能够用属性
反向传值代理Block
代理:又叫托付自己不能办得事托付给别人去干
UIAlertView,UITextField 都使用了代理
写代理的步骤:
// 须要代理,托付的人
1.声明代理里面的协议方法(@protocol) 2.声明协议的属性 3.什么时候须...
本文是投稿文章,作者:刘小壮
在项目中我们常常会用到代理的设计模式。这是iOS中一种消息传递的方式。也能够通过这样的方式来传递一些參数。这篇文章会涵盖代理的使用技巧和原理,以及代理的内存管理等方面的知识。我会通过这些方面的知识,带大家真正领略代理的奥妙。写的有点多。但都是干货,我能写下去,不知道你有没有耐心看下去。本人能力有限,假设文章中有什么问题或没有讲到的点,请帮忙指出。十分感谢!iOS中消息传递方式...
区别一:delegate针对one-to-one关系,并且reciever可以返回值给sender;notification 可以针对one-to-one/many/none,reciever无法返回值给sender;所以,delegate用于sender希望接受到reciever的某个功能反馈值,notification用于通知多个object某个事件。 区别二: Delegate:消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常...
所有的引用计数系统,都存在循环应用的问题。例如下面的引用关系对象: a创建并引用到了对象b.对象b创建并引用到了对象c.对象c创建并引用到了对象b.这时候b和c的引用计数分别是2和1。当a不再使用b,调用release释放对b的所有权,因为c还引用了b,所以b的引用计数为1,b不会被释放。b不释放,c的引用计数就是1,c也不会被释放。从此,b和c永远留在内存中,造成内存浪费。这种情况,必须打断循环引用,通过其他规则来维护引用关系。那...
//
// ViewController.m
// viewControllerTrans
//
// Created by 徐坤坤 on 15/6/5.
// Copyright (c) 2015年 hr. All rights reserved.
//#import "ViewController.h"
#import "textBoxView.h"
@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(50, 50, 80, 80)];label.text=@"Welcome to China";label...
单例传值
实际开发中,一般将用户的信息储存在单例之中,单例保证了只有一个事例,一旦系统调用单例方法,就可以对其中的内容进行修改,读取等等。
属性传值
实际开发中,经常会遇到这种情况:前一个页面push到一个新的控制器,push的过程中,需要alloc一个新的控制器实例,我们还需要将前一个页面的信息传递到新建的控制器中,例如系统的通讯录,点击某一个联系人会...
案例:(在模拟器中按住option键,点击鼠标就会出现缩放的手势)(1)在ViewController.m中:——缩放东西是UIScrollView除了滚动之外的另一个功能,所以需要缩放的东西应该先放在UIScrollView里,比如此处的imageView;——而我们在缩放时候,scrollView自己是不知道我们要缩放哪个控件的,所以scrollView需要一个代理来告诉它,这个代理一般就是我们的控制器;——而控制器要成为它的代理就必须遵守它的协议;——控制器在接受协...
查看原文今天通过自己的学习把textfield的代理方法全部罗列出来,先后调用顺序做了一下验证。 操作方法是,打开界面-->点击textField-->输入‘abc’-->点击‘x’清除按钮-->点击键盘‘换行’-->点击‘完成’log日志:4241115763#pragma mark - textField delegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{ NSLog(@"1");//输入文字...
在ios下,需要打开https链接,但是如果其中使用了代理访问,则会被默认返回证书验证错误,无法正常访问通常是在国内访问国外facebook的情况下这是因为https访问的时候,会验证一次证书,如果用了代理,证书验证的时候会被认为有风险,则会拒绝掉连接也就是为了避免中间人攻击而做的限制这里可以考虑先用NSURLConnection创建一个https连接,让本次针对目标地址的连接在验证时忽略证书,就可以保证之后的连接再也没证书验证问题了 ...