OC之protocol监听器的实现】的更多相关文章

画图 图解 代码 总结 一.画图 本人画了一个图(字体和画图水平请忽略) 二.图解 1.首先我们上边是一个按钮的类,按钮当中包括了一条线,这个线是什么呢? 其实难理解就难理解到这条线上了 1⃣️这条线首先来说属于按钮的一部分,是一个成员变量 2⃣️这条线中定义了一个协议,什么协议?为什么要定义协议?我想到一个非常好的例子 我们的电脑想要实现通信,遵循的是TCP/IP协议,协议本身独立了我们电脑存在.但是我们电脑内部默认有那么一个东西让我们实现了这个协议 3⃣️监听器也实现这个协议,接着上边的例子…
OC中protocol.category和继承的区别以前还是有点迷糊,面试的时候说的有点混乱,现在结合一些资料总结一下. 利用继承,多态是一个很好的保持"对扩展开放.对更改封闭"(OCP)的办法,也是最常见的一种方法.Objective C还支持另外两种语法来支持OCP:Protocol和Category.Protocol只能定义一套接口,而不能提供实现,变相的也是一种Abstract class的实现方式(oc 语法上本身不支持抽象基类).Category可以为类提供额外的接口和实现…
OC中的protocol就是和JAVA中interface差不多的东西,但是又不是完全一样的.这个protocol常用来实现委托,也就是自己不实现,当事件产生的时候去回调委托者. 让委托者去执行响应的动作. 咱们先定义一个Button类来模拟按钮代码如下 Button.h #import <Foundation/Foundation.h> @class Button; @protocol ButtonEventDelegate <NSObject> -(void)onClick:(…
开放封闭原则(OCP)就是,“对扩展开放,对更改封闭”.是所有面向对象设计的一个核心宗旨.感兴趣的可以看百度百科的一些解释:http://baike.baidu.com/view/2493421.htm. 在用Objective C进行开发的时候,OCP当然也是宗旨.利用继承,多态是一个很好的保持OCP的办法,也是最常见的一种方法.Objective C还支持另外两种语法来支持OCP:Protocol和Category.(想要了解Objective c语法的可以看这里:http://develo…
一.protocol 1.基本用途 1> 可以用来声明很多方法,但是不能用来声明成员变量 2> 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明 3> 只要父类遵守了某个协议,就相当于子类也遵守了 2.格式 1> 协议的编写 @protocol 协议名称 //方法声明列表 - (void)test; - (void)test2; + (void)test; + (void)test2; @end 2> 某个类遵守协议 @interface 类名 :父类 <…
都需要协议实现者提供具体变量: 否则认为不符合协议. @protocol edddd <NSObject> @property(nonatomic, strong) NSObject *egooo; @end Auto property synthesis will not synthesize property 'egooo' declared in protocol 'edddd' Add a '@synthesize' directive Terminating app due to u…
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang failed with exit code 1 解决方法:在Build Setting  搜索框中搜索pch,找到了Prefix Header,把后面的Debug中和release中的所有信息都删除就可以解决.…
参考资料:博客 @protocol,协议: OC中protocol的含义和Java中接口的含义是一样的,它们的作用都是为了定义一组方法规范. 实现此协议的类里的方法,必须按照此协议里定义的方法规范来. 格式:CO中定义协议用@protocol和@end成对使用:@protocol   协议名   <NSObject> .... @end 另外,OC协议里的方法并不一定要全部实现,@required(必须实现).@options(可选实现).若不写这两个关键字,则默认是必须实现的. 实现协议用尖…
1.Cocoa是什么?Cocoa是使用OC语言编写的工具包,里面有大量的类库.结构体,说白了其实就相当于java中的标准API.C++中的标准库.OC中没有命名空间的概念,所以使用加前缀来防止命名冲突,因此你会看到大量的以NS 为前缀的类名.结构体.枚举等. 2.Cocoa框架由Foundation Kit.App Kit两部分组成,前者是基础工具库,后者主要是UI库.高级对象等. 3.static 标识的类变量定义在接口的外面,类变量只能本类访问,除非提供类方法给外部访问这个类变量. 4.@语…
Objective-C的语法对比(和Java的对比)    Objective-C的语法对比(和Java的对比) 1.函数的对比 例子: helloworld方法 Java 语言:     public void helloWorld(bool ishelloworld) {      //TODO      } Objective-C语言:     -(void) HelloWorld:(BOOL)ishelloworld{      //TODO      } 前面带有减号(-) 的方法为实…
转自:http://blog.sina.com.cn/s/blog_93742d0d010165qi.html 1.Cocoa是什么?Cocoa是使用OC语言编写的工具包,里面有大量的类库.结构体,说白了其实就相当于java中的标准API.C++中的标准库.OC中没有命名空间的概念,所以使用加前缀来防止命名冲突,因此你会看到大量的以NS 为前缀的类名.结构体.枚举等. 2.Cocoa框架由Foundation Kit.App Kit两部分组成,前者是基础工具库,后者主要是UI库.高级对象等. 3…
Cocoa是什么,Cocoa是使用OC语言编写的工具包,里面有大量的类库.结构体,其实就相当于java中的标准API.C++中的标准库.OC中没有命名空间的概念,所以使用加前缀来防止命名冲突,因此你会看到大量的以NS 为前缀的类名.结构体.枚举等. Cocoa框架由Foundation Kit.App Kit两部分组成,前者是基础工具库,后者主要是UI库.高级对象等. static 标识的类变量定义在接口的外面,类变量只能本类访问,除非提供类方法给外部访问这个类变量 @语法是OC特有的一种语法,…
OC中Protocol理解及在代理模式中的使用 Protocol基本概念 Protocol翻译过来, 叫做"协议",其作用就是用来声明一些方法: Protocol(协议)的作用 定义一套公用的接口(Public) @required:必须实现的方法,默认在@protocol里的方法都要求实现. @optional:可选实现的方法(可以全部都不实现) 委托代理(Delegate)传值 它本身是一个设计模式,它的意思是委托别人去做某事. 比如:两个类之间的传值,类A调用类B的方法,类B在执…
iOS开发入门教程 http://my.oschina.net/mailzwj/blog/133273 摘要 iOS开发入门教程,从创建项目到运行项目,包括OC基础,调试,模拟器设置等相关知识. iOS Objective-C 目录[-] 写在前面的话 iOS开发环境简述 第一步,创建项目 1.1 新建iOS项目 1.2 应用程序目录结构说明 1.3 应用程序初始结构概览 1.3.1 iOS应用程序的生命周期 第二步 代码入门(数据类型) 2.1 基础数据类型 2.2 OC数据类型 2.1.1…
1.协议(protocol)和委托 1.1 规范.协议与接口 OC中协议的作用就相当于其他语言中接口的作用.协议定义的是多个类共同的公共行为规范,协议通常定义一组公用方法,但不提供实现. 1.2 定义 正式协议使用@protocol关键字来定义,语法如下: @protocol 协议名<父协议1,父协议2> { //方法定义 } 一个协议可以有多个直接父协议,但协议只能继承协议不能继承类.协议中定义的方法只有方法签名,没有方法实现:协议中定义的方法既可以是类方法,也可以是实例方法. 1.3 实现…
面试笔试精华(二) 警告:一定要把英文题目过一遍,有些公司的题目故意弄成英文的!!! 1.        Difference between shallow copy and deep copy? 浅复制和深复制的区别? 1>   浅拷贝:指针(地址)拷贝,不会产生新对象 2>   深拷贝:内容拷贝,会产生新对象 2.        What is advantage of categories? What is difference between implementing a categ…
前言 iOS之前被称为 iPhone OS,是一个由苹果公司开发的移动操作系统. iOS的第一个版本是在2007年发布的,其中包括iPhone和iPod Touch. iOS开发工具:Xcode 运行环境:mac Xcode Xcode 是苹果公司的集成式开发环境(IDE),可以同时用来开发 iOS 和 Mac OS X 应用程序.当你在 Mac 电脑上安装 Xcode 之后,同时也会安装 iOS SDK,其中包含了 iOS 平台开发所需的接口等. 面向对象 为什么要用面向对象? 为了模拟现实世…
第1天: 今天推送的Mac技巧: 使用OS X,我们可以充分利用系统提供的多个Space,把不同的程序放到不同的Space,让我们的系统更有扩展性.如何增加Space呢?四指上推,在桌面的最上方会出现当前的Space,把鼠标移到Space列表的右侧,会出现一个带+号的空间,点击加号,即可增加一个Space.那么如何把某个程序固定在某个Space打开呢?在某个Space打开程序,在Dock中找到这个程序图标,鼠标长按会出现一个菜单,选项-分配给,选“这个桌面”,下次再打开这个程序,就会自动进入设定…
参考:https://www.jianshu.com/p/1d3496bc5bda 1.#import 跟#include.@class有什么区别?#import<> 跟 #import""又什么区别? 1.#import和#include都能完整地包含某个文件的内容,#import能防止同一个文件被包含多次 2.@class仅仅是声明一个类名,并不会包含类的完整声明;@class还能解决循环包含的问题 3.#import <> 用来包含系统自带的文件,#imp…
1. Difference between shallow copy and deep copy? 1> 浅拷贝:指针(地址)拷贝,不会产生新对象 2> 深拷贝:内容拷贝,会产生新对象 2. What is advantage of categories? What is difference between implementing a category and inheritance? 类别主要有3个作⽤:(1)将类的实现分散到多个不同⽂件或多个不同框架中.(2)创建对私有⽅法的前向引⽤.…
程序发轻狂,代码阑珊,苹果开发安卓狂!--写给狂热的编程爱好者们 写在前面的话 学习iOS应用程序开发已有一段时间,最近稍微闲下来了,正好也想记录一下前阶段的整个学习过程.索性就从最基础的开始,一步一步记录一个最简单的 iOS应用从创建到运行的全过程,其中会穿插很多相关知识或是遇到过的问题.其实算不上教程,但希望能够帮助更多的开发爱好者更快.更好的入门. iOS开发环境简述 最友好,最现实,也是最方便的开发环境就是在Mac系统中安装Xcode进行开发.原因在于:第一,开发工具(Xcode)限制.…
@protocol Study; int main(int argc, const char * argv[]) { @autoreleasepool { Student *stu = [[[Student alloc] init] autorelease]; // 注意:OC是弱语法的,对类型要求不严格 // NSString *stu = [[[Student alloc] init] autorelease]; // [stu stringByAbbreviatingWithTildeIn…
一. 简单使用 1. 基本用途 可以用来声明一大堆方法(不能声明成员变量) 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明 只要父类遵守了某个协议,就相当于子类也遵守了 2. 格式 协议的编写 @protocol 协议名称 // 方法声明列表 @end 某个类遵守协议 @interface 类名 : 父类 <协议名称> @end 3. 关键字 协议中有2个关键字可以控制方法是否要实现(默认是@required),在大多数情况下,用途在于程序员之间的交流 @required:这个…
OC 中的category分类文件相当于 C#中的部分类:OC 中的protocol协议文件(本质是头文件)相当于 C#中的接口.今天就简单说明一下OC中的这两个文件. 由于视频中的Xcode版本低,导致了分类文件和协议文件没有找到,最后百度得知: 如图:Xcode 7.2版本中的category文件和protocol文件都归类到了Objective-C File 中   一.category文件: 作用:可以扩展自定义类,或者系统类.下面的实例,是扩展了NSString 类,在类中扩展了计算字…
一.block   (一)简介 block 是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,block 可以在任何时候执行.在多线程.异步任务.集合遍历.集合排序.动画转场用的很多. block 和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. 标识符 ^ (二)基本使用 (1)定义block 变量 // 有参数,返回值类型为int int (^MySum)(int, int) = ^(int a, int b) { return…
在OC语言中,协议是一组方法,里面有两种方法,一种是遵守这个协议的类的实例必须实现的方法,另一种是可以实现也可以不实现的方法. 例如我定义一个学生的协议,这个协议里有两个方法,其中一个是必选的方法:学生上学,另一个是可选方法,学生学习.只要是学生,不管大学生,中学生,小学生,只要遵守这个协议,都必须实现学生协议中的必选方法,也就是学生上学的方法. 协议中只声明方法,不需要实现方法.方法的实现在遵守这个协议的类的.m文件中实现. 以下是Student协议的定义: #import <Foundati…
Block ● Block封装了一段代码,可以在任何时候执⾏行 ● Block可以作为函数参数或者函数的返回值,⽽而其本⾝身又可以带输⼊入参数或返回值. ● 苹果官⽅方建议尽量多⽤用block.在多线程.异步任 务.集合遍历.集合排序.动画转场⽤用的很多 定义BLOCK变量 Int (^SumBlock)(int,int);//有参数,返回值类型为int Void (^MyBlock)()://无参数,返回值类型为空 Blocks的定义: int (^MySum)(int, int) = ^(i…
一.block 1> 基本使用 相当于用来存放代码的代码块 效率高 若没有形参可以省略小括号 2> block与函数的相同点 可以保存代码 可以有返回值 可以有形参 调用方式一样 3> block对外部变量的访问 可以访问外部变量 默认情况下,不能在block内修改外部变量 用关键字__block修饰外部变量,就可以在block内修改它 4> 用typedef定义block类型与函数类型 定义block类型 ① 格式:typedef int (^myBlock)(int, int)…
一.block 1> 基本使用 相当于用来存放代码的代码块 效率高 若没有形参可以省略小括号 2> block与函数的相同点 可以保存代码 可以有返回值 可以有形参 调用方式一样 3> block对外部变量的访问 可以访问外部变量 默认情况下,不能在block内修改外部变量 用关键字__block修饰外部变量,就可以在block内修改它 4> 用typedef定义block类型与函数类型 定义block类型 ① 格式:typedef int (^myBlock)(int, int)…
  java 在java中的interface是‘接口’的意思,而java的类声明用class,即接口用interface声明,类是用class声明,是两个独立的部分. 只有在类声明要实现某个接口时,他们两者才建立了关系,例如: [html] view plaincopyprint? interface AI{ void print(); }; class AC{ }; 这时候,AI和AC是独立存在,AC不会因为没有和AI建立关系而编译错误,将AC做以下修改后,AI才和AC建立了关系,AC必须实…