OC--protocol协议

// MyProtocol.h
#import <Foundation/Foundation.h>
@protocol MyProtocol <NSObject>
@optional
- (void)print:(int)value;
@required
- (int)printValue:(int)value1 andValue:(int)value2;
@end

// MyTest.h
#import <Foundation/Foundation.h>
#import "MyProtocol.h"
@interface MyTest : NSObject <MyProtocol>
- (void)showInfo;
@end

// MyTest.m
#import "MyTest.h"
@implementation MyTest
- (void)showInfo{
    NSLog(@"showInfo...");
}
- (int)printValue:(int)value1 andValue:(int)value2{
    NSLog(@"value1 = %d, value2 = %d", value1, value2);
    return 0;
}
// 下面这个方法可以实现,也可以不实现
- (void)pirnt:(int)value{
    NSLog(@"value = %d", value);
}
@end

// mian.m
#import <Foundation/Foundation.h>
#import "MyTest.h"
#import "MyProtocol.h"
int main(int argc, const char *argv[]){
    // 普通类的调用方法
    MyTest *myTest = [[MyTest alloc] init];
    [myTest showInfo];
    SEL sel = @selector(print:);
    // 确定这个print方法是否实现
    if([myTest respondsToSelector:sel]){
        [myTest print:20];
    }
    [myTest printValue:20 andValue:10];
    // 使用协议的方式来调用
    id<MyProtocol> myProtocol = [[MyTest alloc] init];
    if([myProtocol respondsToSelector:@selector(print:)]){
        [myProtocol print:10];
    }
    return 0;
}

时间: 2024-11-04 00:03:36

OC--protocol协议的相关文章

黑马程序员——OC学习小结------arc,block,protocol(协议)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.ARC的判断准则:只要没有强指针指向对象,就会释放对象 1.ARC特点 1> 不允许调用release.retain.retainCount 2> 允许重写dealloc,但是不允许调用[super dealloc] 3> @property的参数 * strong :成员变量是强指针(适用于OC对象类型) * weak :成员变量是弱指针(适用于OC对象类型) * assign

OC中协议Protocol的小结

//协议的基础语法 //遵从协议的类,可以声明出遵从协议的对象 Dog * dog = [[Dog alloc] init]; //普通id指针能指向任何对象,带协议的id只能指向遵从协议的类的对象 //Dog类遵从了MyProtocol协议,实现了协议中的方法 id <MyProtocol> obj = dog; //obj可以使用协议中定义的方法bark [obj bark]; // // main.m // 协议1-基础语法 // // Created by Macro on 14-12

iOS开发之oc(十四)--protocol协议(1)

protocol:协议 想要拥有某些方法声明通过: // : 继承父类 // <> 遵守协议 协议:就是用来声明方法的,想要拥有某些方法声明,只需要遵守协议. 1.协议的定义 @protocol 协议名称 <NSObject> // 方法声明列表.... @end // 定义了一个名叫MyProtocol的协议 @protocol MyProtocol <NSObject> // @required 要求实现,不实现就会发出警告(默认是这个) // @optional

ISO 基础之 (十三) protocol 协议

一 简绍 protocol,简单来说就是一系列不属于任何类的方法列表,其中声明的方法可以被任何类实现.这种模式一般称为代理(delegation)模式.通过Protocol定义各种行为,在不同的场景采用不同的实现方式.在iOS和OS X开发中,Apple采用了大量的代理模式来实现MVC中View和Controller的解耦. 1.Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现. 2.只要某个类遵守了这个协议,就拥有了这个协议中的所有方法声明. 3.只要父类遵守

Arc 自动内存管理 分类Category 类扩展 Block 代码段 和 Protocol协议的一些简单知识的总结

1. Arc的使用 Arc是自动内存管理: arc的使用原则 1).只要对象没有任何强类型指针引用就会被释放’. 2).只要对象被任何强类型指针指引就不会被释放. 弱指针:__weak 被__weak修饰的指针就被称为弱型指针: 强类型指针 默认的指针都是强类型指针: 被__strong修饰的指针也是强类型指针. 使用Arc时可以重写dealloc方法,但是在重写方法时不能手动调用[super dealloc]: 在Arc中通过@property生成的属性如果是OC的对象那么要用Strong来修

黑马程序员_ 利用oc的协议实现代理模式

先说下代理模式是什么吧 定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用. 在看过李明杰老师的课程后,我对代理模式有了最初步的理解,虽然还很浅显 但是也明白了代理模式的 一些作用跟用法.首先使用代理模式可以降低耦合度.大大的增强了代码的弹性. 举个例子,小明想看电影,但是没时间买票 于是就拜托小强去买票 最简单的方式就是 建立一个person类(小明) 一个agent类(代理类) ag

OC的协议

oc协议 在Object-C中,委托和数据源都是由协议实现的.协议定义了一个类与另一个类进行沟通的先验方式. 它们包含一个方法列表,有些是必须被实现的,有些是可选的. 任何实现了必需方法的类都被认为符合协议. 协议,是通过网络,计算机使用者进行通讯后,互相进行约定规定的集合.两个类进行通讯,用协议就比较方便.下面是CocoaChina 版主"angellixf"为新手写的协议入门介绍以及代码例子,希望对刚入门开发者有所帮助一.说明  1.协议声明了可以被任何类实现的方法  2.协议不是

(Object-C)学习笔记(四) --OC的协议、分类、扩展

OC的协议 协议就是规则,定义了一个协议就相当于制定了一个规则.OC中的类可以遵守规则,遵守协议的类就相当于多了一种或几种能力.将一些属性和方法方法放到一个协议里,可以方便的添加进其他类里面. 协议的定义: @protocal @required 声明必须遵守的属性和方法  默认 @optional 声明可选遵守的属性和方法 @end 协议的遵守: @interface TRMyClass : NSObject<TRMyProtocol> 协议在尖括号中     若是遵守多个协议 @inter

OC语言--协议

1.协议的介绍 1.1什么是协议 协议就是需要相互遵守的约定.规范.比如卖身协议,我们负责给Boss写代码,调bug,发布,Boss负责给我们发薪水,保险,福利:比如Http协议,两台计算机,遵守相同的约定,可以相互通讯.就像我们彼此交流,都遵守说中文这个约定或规范. 2. OC中协议 2.1OC协议概念 OC或IOS中的协议,就是一组方法(成员函数)的声明列表:声明方不需要实现这些方法,由遵守协议的对象来实现协议所规定的方法.(制定法律规范,让别人遵守). 2.2OC协议的使用步骤 制定协议

OC中协议的概念以及用法

OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习Java中的接口时候,看可以知道其实接口就相当于一种契约(协议),给他的实现类打上标记了,当然这个活在Java5.0之后,被注解替代了,因为注解就是为了此功能诞生的.协议就是定义了一组方法,然后让其他类去实现 下面来看代码:WithProtocol.h[objc]  view plaincopy