四、Protocol 类似java的接口
概念:是一系列方法的列表,其中声明的方法可以被任意类实现。这种模式称为代理。和JAVA接口不同的是,Protocol可以不用被实现所有的方法。
使用场景:想要监听一些按钮的操作
1声明一个协议
//<>代表实现某个协议
@class Button;
@protocol ButtonDelegate <NSObject>
-(void)onClick:(Button *)btn;
@end
声明一个引用该协议个set方法
@interface Button : OSObject
//delegate就是按钮的监听器
@property (nonaomic,retain) id<ButtonDlegate> delegate;
@end
防止内存泄露
@implementation Button - (void)dealloc{
@end
实现这个协议
@protocol ButtonDelegate;
@interface ButtonLisenter : NSObject <ButtonDelegate>
@end
@import "Button.h"
@implementation ButtonLisenter
- (void)onClick:(Button *)btn{
NSLog(@"这个按钮被点击了%@被点击了",btn);
}
@end
在main方法中调用它测试
@autoreleasepool {
四、Protocol 类似java的接口的更多相关文章
- Python - python里有类似Java的接口(interface)吗?
参考 https://stackoverflow.com/questions/2124190/how-do-i-implement-interfaces-in-python https://stack ...
- python面向对象进阶 反射 单例模式 以及python实现类似java接口功能
本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...
- java基础-接口
浏览以下内容前,请点击并阅读 声明 接口是java语言中的一个引用类型,和类一样,接口可以包含常量,方法签名,默认方法,静态方法和嵌套类型.含有方法主体的只有其中的默认方法和静态方法.接口不能被实例化 ...
- java微信接口之五—消息分组群发
一.微信消息分组群发接口简介 1.请求:该请求是使用post提交地址为: https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_t ...
- C# 获取类似java gettime() 的时间格式
今天做了一个面向Java的接口,需要做到时间的统一,C#提供了System.DateTime.UtcNow 但是需要自己做下处理,记录一下自己的方法, 留着以后查阅方便. /// <summar ...
- Spring Boot入门(四):开发Web Api接口常用注解总结
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...
- java的接口为什么不能实例化
java的接口为什么不能实例化呢?首先,我们需要明白实例化的含义.实例化实际意义是在jvm的堆中开辟出一块内存空间,比如Student s = new Student();此处声明Student对象s ...
- JAVA面向接口的编程思想与具体实现
面向对象设计里有一点大家已基本形成共识,就是面向接口编程,我想大多数人对这个是没有什么觉得需要怀疑的. 问题是在实际的项目开发中我们是怎么体现的呢? 难道就是每一个实现都提供一个接口就了 ...
- Java中接口和抽象类的比較
Java中接口和抽象类的比較-2013年5月写的读书笔记摘要 1. 概述 接口(Interface)和抽象类(abstract class)是 Java 语言中支持抽象类的两种机制,是Java程序设计 ...
随机推荐
- Android根据APP包名启动应用
public void openApp(String packageName, Context context) { PackageManager packageManager = context.g ...
- IOS 应用跳转 (IOS9白名单)
跳转到指定app的实现 IOS中应用的跳转是通过URL实现的,因此在实现应用跳转之前我们要设置一下对应的URL. 图一(寻找配置软件的URL) 图二(具体配置选项) 注意: 如果IOS版本为IOS9 ...
- iOS-RegexKitLite导入错误
RegexKitLite是什么? RegexKitLite是一个非常方便的处理正则表达式的第三方类库. 本身只有一个RegexKitLite.h和RegexKitLite.m 导入RegexKitLi ...
- 记录ubuntu下的svn一些操作
1.install svn serversudo apt-get install subversion 2.make repositorysudo mkdir /home/.svnsudo mkdie ...
- class的继承,从基类开始
#include <iostream> #include <stdio.h> using namespace std; class A { public: A() { puts ...
- hibernate取出count(*)的办法
1.定义查询语句 String sql="select count(*) from ExcelInfor";2.获取count(*)返回结果: (1)int count=In ...
- python基本数据结构-集合-方法
- mongo学习笔记(五):分片
分片 人脸: 代表客户端,客户端肯定说,你数据库分片不分片跟我没关系,我叫你干啥就干啥,没什么好商量的. mongos: 首先我们要了解”片键“的概念,也就是说拆分集合的依据是什么?按照 ...
- 问题解决——cout 输出 CString
Unicode下 wcout<<strText.GetString()<<endl;
- ehcache整合spring注解方式
一.简介 在hibernate中就是用到了ehcache 充当缓存.spring对ehcache也提供了支持,使用也比较简单,只需在spring的配置文件中将ehcache的ehcache.xml文件 ...