IOS协议和委托

简介: 用已经建立的知识学习一门新的知识,有的时候会事半功倍,但有的时候也会适得其反,因为我们已有的知识跟新知识可能相似,也可能有一些概念上的冲突,在javascript的博文中,我已经说了我的感受。冲突的东西当我理解了,那就叫做进步,我们无法用已有的知识一步走到死,因此要经常的吸收一些外来的新鲜血液。
用已经建立的知识学习一门新的知识,有的时候会事半功倍,但有的时候也会适得其反,因为我们已有的知识跟新知识可能相似,也可能有一些概念上的冲突,在javascript的博文中,我已经说了我的感受。
冲突的东西当我理解了,那就叫做进步,我们无法用已有的知识一步走到死,因此要经常的吸收一些外来的新鲜血液。
一些概念,思想和现有知识不太一样的东西,我在学习初期可能比较困难,有的时候搞的自己情绪波动不稳定,还反而的问自己,是不是自己学不会这个东西,怎么在这个知识面前像个白痴,不怕学不会,就怕不学,认真对待,坚持一段时间就没有
这种想法了。我也用java和C#这样的举过例子,因为这两个很类似,因此只会其中的一个,学另外一个花不了多少时间,但是这是让入门,如果深入的话,那还需要更多的时间,学习是少不了以时间为代价的。
明天就除夕了,今天在这里看着IOS,虽然说在坚持,但是效率低下,看几句,歇一歇,还不断的斜视电脑右下角的时间,心里不断的念叨“还没下班,今天会不会早走”之类的话。
无论忙也好,闲也罢,今天就让自己轻松点,只希望2013年有所获,有所得。

IOS开发用的是Object-c简称OC,是在C语言的基础上扩展起来的,加入了面向对象的东西,我们知道还有一个语言也是如此,我知道你知道的C++,因此很多学习OC的语言都会从发展史说起,其实了解这个发展史是很有意义的,
我们可以知道那个时代都有那些东西,以及那个时候这些东西的功能,用现在知识去判断当时的东西是否完善,缺少什么等?
OC中没有模板,没有多继承,没有private方法,没有内联函数,没有virtual关键字等。OC中的协议相当于C#中的Interface,而Interface相当于c++中的类,.m文件相当于c++中的.cpp文件,委托相当于C#中的委托,OC中的集合却只能容纳对象,OC中对象的构造分了两部,
没有和C#/java中类名相同的构造函数一说,而是可以返回一个id类型的东东,现在我们看OC中的协议和委托吧。
以下内容来自:http://blog.csdn.net/jacky_jin/article/details/7004013


协议,就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。

委托(代理),顾名思义就是委托别人办事,就是当一件事情发生后,自己不处理,让别人来处理。


1. 同时用到协议及委托 有两个类,一个是控制器类,一个是view类 当用户操作view时,需要通知控制器,让控制器去处理一些逻辑时,需要用到委托及协议 controller.h #import "view.h" @interface Controller:NSObject<TestDelegate>{ View* _view; } @end controller.m @implement -(void) viewDidLoad { view =[ [View alloc] init]; view.delegate = self; //这里用到委托,意思就是View把事情交给Controller去处理。 体现出MVC的思想 } // View 其实并没有实现testMethod1及testMethod2, 在这里实现 -(void) testMethod1 { //deal logic } -(void) testMethod2 { //deal logic } view.h @protocol TestDelegate -(void) testMethod1 -(void) testMethod2 @end @interface View:NSObject{ id <TestDelegate> delegate; } view.m #implement // 处理view上的一些用户事件 -(void)OnAction1 { [delegate testMethod1]; } -(void)OnAction2 { [delegate testMethod2]; } @end 2. 单独用到协议 可以看一下NSObject类,这是所有objectc 类的基类,它实现了<NSObject> 协议 当有一个类NSString* str; 可以[str retain]; retain 就是NSObject协议里指定的一个方法,而并不是NSObject类的成员方法 我相信在NSObject类里有 -(id) retain { // some code return self; } NSObject类会去实现这个方法,因为这个方法是NSObject协议里规定的。 学过C++的人 会有所体会这里的协议 有点像C++里的抽象类。这样是否会有助于理解?

 

相关文章
|
编解码 iOS开发 流计算
调用Live555接收RTSP直播流,转换为Http Live Streaming(iOS直播)协议
调用Live555接收RTSP直播流,转换为Http Live Streaming(iOS直播)协议
386 1
|
XML JSON 编解码
IM通讯协议专题学习(九):手把手教你如何在iOS上从零使用Protobuf
接上篇《金蝶随手记团队的Protobuf应用实践(原理篇)》,本文将以iOS端的Objective-C代码为例,图文并茂地向您菔救绾卧趇OS工程中快速使用Protobuf,希望对你有帮助。
155 0
IM通讯协议专题学习(九):手把手教你如何在iOS上从零使用Protobuf
|
Web App开发 NoSQL Linux
小米被指违反 GPL 协议;iOS 16 公测版发布;Go 1.19 RC1 发布 | 思否周刊
小米被指违反 GPL 协议;iOS 16 公测版发布;Go 1.19 RC1 发布 | 思否周刊
175 0
|
安全 Android开发 iOS开发
iOS隐私安全:用户协议及隐私政策弹框(包含超链接属性、demo支持中英文切换)
iOS隐私安全:用户协议及隐私政策弹框(包含超链接属性、demo支持中英文切换)
1232 1
iOS隐私安全:用户协议及隐私政策弹框(包含超链接属性、demo支持中英文切换)
|
iOS开发
IOS之学习笔记十五(协议和委托的使用)
IOS之学习笔记十五(协议和委托的使用)
108 0
IOS之学习笔记十五(协议和委托的使用)
|
Java iOS开发
IOS之学习笔记十四(协议的定义和实现)
IOS之学习笔记十四(协议的定义和实现)
128 0
|
Java iOS开发
IOS学习笔记十三(使用类别实现非正式协议)
IOS学习笔记十三(使用类别实现非正式协议)
113 0
IOS10安全策略变更,native app需要增加alipays协议白名单
问题:   由于iOS10安全策略的变化,Native APP的WebView默认不支持app_scheme协议(iOS10之前默认支持)。 这将导致在WebView中无法通过alipays://xxxx的方式来唤起支付宝App。
1232 11
|
物联网 iOS开发 Perl
物联网平台iOS开源MQTT协议接入代码测试
使用云端提供的iOS SDK接入平台,也可以使用开源方式接入,测试使用MQTTClient接入物联网平台
691 0
|
iOS开发 前端开发 Swift
iOS中基于协议的路由设计
前段时间对我们自己的App做了结构上的重构,抛弃了之前简单的MVC开发模式。本文将重点分享重构中的Router模块。