`
百合不是茶
  • 浏览: 355840 次
社区版块
存档分类
最新评论

oc协议

阅读更多

协议就是定义一组方法实现类必须实现这些方法,类似于java的接口和抽象类

 

协议的定义语法:

 

@protocol  协议名  <父协议>
定义方法
@end
注:定义协议的关键字是@protocol,同时协议也是可以继承父协议的

协议中定义的方法还有两个修饰符:
@required:这个表示这个方法是其他类必须实现的,也是默认的值
@optional:这个表示这个方法对于其他类实现是可选的

 

协议的定义TestProtocol.h

//oc协议的简单使用
@protocol TestProtocol <NSObject>

@required//必须实现
-(void)printlf;
+(void)getHotel;

@optional//可选实现
-(void)setHotel;

@end


#endif /* TestProtocol_h */

 

文件TestExtends.h

#import "TestProtocol.h"

@interface TestExtends: NSObject<TestProtocol>{
    
NSString* name;
    
}
@property NSString *name; //类似set和get方法

//@property name;


-(void)setName:(NSString*)newName;//定义方法

-(id)initWithC:(NSString*)newName;//定义构造方法


@end

#endif /* TestExtends_h */

 

TestExtends.m文件

#import "TestExtends.h"

@implementation TestExtends

@synthesize name;

-(void)setName:(NSString*)newName{

    NSLog(@"调用父类的setName方法");

}

+(void)getHotel{
 NSLog(@"getHotel");//必须实现的方法
}

-(void)printlf{
    NSLog(@"printlf");//必须实现的方法
}

-(void)setHotel{
    NSLog(@"setHotel");//可选的方法
}


-(id)initWithC:(NSString *)newName{
    if (self==[super init]) {
        name=newName;//
        NSLog(@"父类的构造方法被调用。。。。");
    }

    return self;
}

@end

 

 

mian文件

 TestExtends* te=[[TestExtends alloc] init];
        [te setName:@"Object-c"];
        NSLog(@"简单的实现");
        [te printlf]; //调用协议的方法

 

运行结果:

2015-11-04 23:04:40.179 test_01[1432:80295] 调用父类的setName方法

2015-11-04 23:04:40.180 test_01[1432:80295] 简单的实现

2015-11-04 23:04:40.180 test_01[1432:80295] printlf

 

(lldb) 

 

 

 

0
0
分享到:
评论

相关推荐

    OC 协议(取值)Demol.zip

    "OC 协议(取值)"这个主题很可能指的是Objective-C中的协议(Protocol)特性和其与属性(Property)取值相关的概念。下面我们将深入探讨这两个核心知识点。 首先,我们来理解Objective-C中的“协议”。协议是...

    Swift和OC混编

    - 对于协议,Swift可以遵循OC协议,只需在协议声明前加上`@objc`关键字。 4. **Objective-C调用Swift** - Swift的类、结构体、枚举和协议默认对外部不可见。若要在OC中使用,需添加`@objc`关键字。 - Swift的类...

    OC与Swift混编

    - OC协议也可以被Swift遵循,Swift会自动为OC协议生成对应的类型别名。 6. **属性和方法的互访** - OC的实例变量和方法可以直接在Swift中使用,反之亦然,但需要注意访问控制(如public、private等)。 - Swift...

    Swift和OC代码的相互使用

    #### 2.2 使用OC协议 在桥接头文件导入协议,如: ```objc #import #import "MyProtocol.h" ``` Swift可以遵循并实现这个协议: ```swift class SwiftClass: NSObject, MyProtocol { // 实现协议方法 } ``` #### ...

    OC与Swift混编Demo

    同样,Swift类作为OC协议的代理时,需要遵守`@objc`规则。 5. **Category与Extension** Objective-C的Category可以在Swift中使用,无需特殊处理。Swift的Extension虽然不能直接在OC中访问,但可以通过公开相关的...

    oc485通信协议

    ### OC485通信协议详解 #### 一、概述 OC485通信协议是一种基于RS-485物理层的通信标准,广泛应用于工业自动化领域。它利用Modbus RTU协议来实现设备间的通信与控制。本文将详细介绍OC485通信协议的基本概念、物理...

    让oc像swift那样给@protocol协议添加方法的默认实现教程加demo,

    在Objective-C(OC)中,协议(@protocol)主要用于定义对象间交互的接口,它们类似于接口,但不提供默认实现。然而,在Swift中,我们可以为协议提供默认实现,使得遵循该协议的类无需手动实现所有方法。这篇教程将...

    OC非正式协议实现代理功能

    在iOS和macOS开发中,Objective-C(OC)是一种常用的语言,它引入了协议(Protocol)的概念,类似于其他语言中的接口。协议允许类之间定义一套方法,这些方法并不强制实现,但提供了统一的调用规范。正式协议是遵循...

    千锋OC源码

    千锋OC源码:目录 OC语言教程-第1讲-基本语法 OC语言教程-第2讲-点语法 ...OC语言教程-第7讲-协议 OC语言教程-第8讲-协议代理设计模式 OC语言教程-第9讲-Category语法 OC语言教程-第10讲-Blocks语法

    oracle下的oc4j配置

    - 接受许可协议。 - 点击 [Next] 继续。 - **步骤 1.2**:选择安装路径,默认为 `C:\j2sdk1.4.2_06\`。可以通过点击 [Change] 来更改安装路径。 - 点击 [Next] 继续。 - **步骤 1.3**:等待安装过程完成。 -...

    oc初识总代码

    总的来说,"OC初识总代码"的学习涵盖了面向对象编程的基本概念,包括类、对象、消息传递、协议等,同时可能会涉及到Objective-C在实际项目中的应用,比如UI组件的交互和数据管理。通过研究这个压缩包中的代码,初学...

    oc基础教程全集

    Objective-C(简称OC)是苹果公司开发的一种面向对象的编程语言,主要用于iOS和macOS应用程序开发。它是C语言的超集,包含了C的所有特性,并扩展了面向对象的概念。本教程将带你深入学习OC的基础知识,帮助你掌握这...

    OC调用swift的DEMO

    接下来,在桥接头文件中,你可以声明任何需要在OC中使用的Swift类、结构体、枚举或协议。例如: ```objc #import // 假设你有一个在Swift中的MySwiftClass类 @class MySwiftClass; // 如果有协议,也可以这样...

    oc 代理的用法.zip

    在OC中,协议(Protocol)定义了一组方法,任何类都可以选择遵循这个协议。代理协议通常包含那些代理对象需要实现的方法,例如传递消息、接收事件等。例如,一个常见的代理协议可能是`UITableViewDataSource`,它...

    OC底层原理之OC语法

    视图通过实现`UIResponder`协议来响应触摸、键盘等事件。 8. **Block底层研究**: Block是Objective-C中的匿名函数,可以捕获并存储其定义范围内的变量。Block的内存管理与普通对象类似,分为栈Block、堆Block和强...

    转换器OC下载oc= =!

    1. **Objective-C语法**:了解Objective-C的基本语法是使用这个转换器的前提,包括消息传递、类、协议、Category等概念。 2. **Swift兼容性**:如果这个转换器是用于Objective-C和Swift之间的转换,那么需要理解两...

    oc4j(PPT)

    Oracle Containers for J2EE (OC4J) 是Oracle公司提供的一款轻量级、高性能的J2EE应用服务器,它是Oracle应用服务器产品家族的一部分,专为开发和运行小型到中型的J2EE应用程序而设计。OC4J的独特之处在于其轻便的...

    swift-在OC项目里的OC代码调用Swift方法Swift代码里调用OC代码

    2. **声明 Swift 类和方法**:在桥接头文件中,不需要导入 Swift 文件,但可以声明 Swift 类或协议,以便 OC 可以看到它们。例如: ```objc @class SwiftClass; ``` 3. **调用 Swift 方法**:在 OC 代码中,你...

    OC与JS相互调用

    在OC中,实现`WKScriptMessageHandler`协议: ```objc - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { if ([message....

    OC与js交互

    为了使JS能够调用OC的方法,我们需要实现`UIWebViewDelegate`协议中的`webView:didFinishLoadForRequest:`方法,并使用`addScriptMessageHandlerForName:handler:`方法注册一个消息处理器: ```objc webView....

Global site tag (gtag.js) - Google Analytics