简单代理 设置

一、理解协议与代理
协议是一个方法签名的列表,在其中可以定义若干个方法。根据配置,遵守该协议的类会去实现这个协议中规定的若干个方法。

代理是一个概念,很难用一个名词去定义(如我们可以说协议其实就是一个方法列表)。它更像是一种关系,我要做某一个事情,但我自己不想去做这件事,我委托其他人帮我去做这件事。这个时候,这位其他人就是我的代理。

二、协议的使用

在定义协议时,可以通过@required与@optional来配置遵守这个协议必须去实现的方法和可以选择的方法。譬如:

@protocol MyRootViewDelegate<NSObject>

//必须的
@required

-(void)ChooseDay:(id)choose;

//可选的

@optional

-(void)hideThisView;

- (void)changeDateFormatter:(NSString*)formatString;  
@end

在定义的协议 MyRootViewDelegate中,如果遵守该协议,就必须实现协议中的-(void)ChooseDay:(id)choose;方法,同时可以根据实际程序要求去实现 -(void)hideThisView; 与- (void)changeDateFormatter:(NSString*)formatString; 。

同时,协议支持对本身的一种扩展,譬如:

@protocol MyRootViewDelegate< MyChooseDayViewDelegate>  
-(void) doSomething; 
@end

MyVRootViewDelegate扩展了MyChooseDayViewDelegate这个协议,也就是说,假如遵守了MyRootViewDelegate的话,也必须实现MyChooseDayViewDelegate中的方法(@required)使用分类的话,就是在定义类的头文件中使用<> 将所需要的协议引入,如果引入多个协议,用","分隔,譬如:

@interface MyClassView:UIViewController <MyRootViewDelegate, UIAlertViewDelegate>  
//TODO: balabalabala...  
@end

在view.h中

#import <UIKit/UIKit.h>

//声明一个代理

@protocol EverySomthing

-(void)doSomthing;

@end

@interface LNView : UIView

@property(nonatomic,retain)NSTimer *timer;

@property(nonatomic,assign)NSInteger inter;

@property(nonatomic,retain)id<EverySomthing>mydelegata;

@end

view.m中

#import "LNView.h"

@implementation LNView

-(id)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(actiiio) userInfo:nil repeats:YES];

[self.timer fire];

}

return self;

}

-(void)actiiio

{

[self.mydelegata doSomthing];

}

想要检查某个类是否实现了某个协议或者某个类是否实现了某个协议的方法,可以通过以下方式来进行测试

//在controller中检测

ViewController *view=[[ViewController alloc]init];

//判断该对象是否实现了EverySomthing  协议

if ([view conformsToProtocol:@protocol (EverySomthing)])

{

NSLog(@"我实现了这个协议");

}

//判断该对象是否实现了doSomthing 方法

if ([view respondsToSelector:@selector(doSomthing)]) {

NSLog(@"我实现了某个方法"); //  respondsToSelector是继承于NSObject

}

时间: 2024-10-08 13:55:08

简单代理 设置的相关文章

2015/10/4 iOS 笔记 细节 简单-代理过程 UITableView

一.简单-代理过程 1,创建代理 @class TgFootView; @protocol TgFootViewDelegate <NSObject> @optional   可选是否实现 视图的下载按钮被点击 - (void)tgFootViewDidDownloadButtonClick:(TgFootView *)footView; @end @interface TgFootView : UIView 代理如果使用强引用,就会产生循环引用,造成控制器和子视图都无法被释放,造成内存泄露.

CentOS7.2 安装Squid3.5及正、反向代理设置

Squid是比较知名的代理软件,它不仅可以跑在linux上还可以跑在windows以及Unix上,它的技术已经非常成熟.目前使用Squid的用户也是十分广泛的.Squid与Linux下其它的代理软件如Apache.Socks.TISFWTK和delegate相比,下载安装简单,配置简单灵活,支持缓存和多种协议.       Squid之所以用的很多,是因为它的缓存功能,Squid缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O. 从经济角度考虑,它是很多网站架构中不可或缺的角色.  

nginx访问控制、rewrite应用、代理设置

 nginx访问控制.rewrite应用.代理设置 一.访问控制 在这里依然还是以default2.conf虚拟主机为例,配置文件位置default2.conf 1.允许某个ip访问 ,需要在default2.conf配置配文件中添加,具体如下图: 规则如下: allow 127.0.0.1; allow 192.168.21.97; deny all; 只允许127.0.0.1和192.168.21.97来访问,其他的全部拒绝 退出保存 1)检查配置文件 2)重置配置文件 3)测试 允许ip测

Git代理设置与访问Github

由于目前工作的网络环境有着很严格的限制,可以说最近在通过代理访问Github上颇费了一些周折,也积累了一些相关的经验,觉得有必要备忘一下.本着"不重新发明轮子"的宗旨,本文不会对Github代理设置的每一个细节进行赘述,文中会给出现成的参考文章,这里要做的是针对一些重要的问题进行解释和补充,相信一定能给遇到同样问题朋友以帮助.本文原文出处:http://blog.csdn.net/bluishglc/article/details/37807501 严禁任何形式的转载,否则将委托CSD

ubuntu 14.04+apache 反向代理设置

第一步 sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod proxy_balancer 第二步 在ubuntu的apache里,每个网站的配置文件是放在单独的文件里,找到 sites-available 文件夹里对应的文件并修改,修改后的配置文件差不多是下面的样子. ServerName www.a.com DocumentRoot “/var/site/www/” ProxyRequests Off <Proxy *> Order

[Android] 开源框架 xUtils HttpUtils 代理设置 (Temporary Redirect错误)

今天简单学习了一下xUtils的使用 https://github.com/wyouflf/xUtils 其中用到HttpUtils模块时,发现总是出现Temporary Redirect 错误. 查看源代码,发现如果是通过代理上网的话,需要在初始化HttpUtils时,传代理的String值. 在HttpUtils.java中: public HttpUtils(int connTimeout, String userAgent) { HttpParams params = new Basic

Ubuntu下Apache反向代理设置

Apache可通过mod_proxy*.so系列模块很好的实现正向.反向代理功能,亦可通过反向代理实现负载均衡,本文将讲述基于Apache反向代理实现负载均衡的配置方法. 1.环境配置说明: 代理服务器域名:ap.proxy web server 1 ip:192.168.195.18 port:80 web server 2 ip:192.168.195.19 port:80 backup server ip:192.168.195.20 port:80 2.确认开启模块:mod_proxy,

常用开发工具的代理设置

在进行代理设置前,首先你得有代理服务器.如果没有,可参见我前一篇文章<使用傻瓜包goagent翻墙>. 下面,我假定我的代理服务器的IP为192.168.137.1(局域网里面用)或127.0.0.1(本机中使用),端口为8087,来讲解一下关于一些工具的代理设置方法,包括: android sdk manager, android studio, svn, git, gradle, curl, repo, wget. 1.Android SDK Manager的代理设置 打开Tools菜单,

BurpSuite 代理设置的小技巧

转载之[安全客]https://www.anquanke.com/post/id/85925 在Web渗透测试过程中,BurpSuite是不可或缺的神器之一.BurpSuite的核心是代理Proxy,通常情况下使用BurpSuite的套路是:浏览器设置BurpSuite代理-->访问Web应用程序-->BurpSuite抓包分析.本人从事Web渗透测试尚不足一年,这期间在代理设置过程中踩到过一点『小坑』,现在将我踩过的『小坑』总结一下.本文主要面对新人朋友,老司机们请不吝赐教~ 0x01 一般