zoukankan      html  css  js  c++  java
  • IOS协议和委托

    用已经建立的知识学习一门新的知识,有的时候会事半功倍,但有的时候也会适得其反,因为我们已有的知识跟新知识可能相似,也可能有一些概念上的冲突,在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++里的抽象类。这样是否会有助于理解?
  • 相关阅读:
    云时代架构阅读笔记时十
    云时代架构”经典文章阅读感想九
    “云时代架构”经典文章阅读感想八
    antlr4
    Centos7定时脚本
    JDBC连接hive失败,一种原因的解决方法
    Linux实用操作命令
    secureCRT下载虚拟机文件到本地
    OpenFeign执行POST请求类型以及Python的requests.post()方法
    DataSphere安装配置
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/2909192.html
Copyright © 2011-2022 走看看