协议就是定义一组方法实现类必须实现这些方法,类似于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)
相关推荐
"OC 协议(取值)"这个主题很可能指的是Objective-C中的协议(Protocol)特性和其与属性(Property)取值相关的概念。下面我们将深入探讨这两个核心知识点。 首先,我们来理解Objective-C中的“协议”。协议是...
- 对于协议,Swift可以遵循OC协议,只需在协议声明前加上`@objc`关键字。 4. **Objective-C调用Swift** - Swift的类、结构体、枚举和协议默认对外部不可见。若要在OC中使用,需添加`@objc`关键字。 - Swift的类...
- OC协议也可以被Swift遵循,Swift会自动为OC协议生成对应的类型别名。 6. **属性和方法的互访** - OC的实例变量和方法可以直接在Swift中使用,反之亦然,但需要注意访问控制(如public、private等)。 - Swift...
#### 2.2 使用OC协议 在桥接头文件导入协议,如: ```objc #import #import "MyProtocol.h" ``` Swift可以遵循并实现这个协议: ```swift class SwiftClass: NSObject, MyProtocol { // 实现协议方法 } ``` #### ...
同样,Swift类作为OC协议的代理时,需要遵守`@objc`规则。 5. **Category与Extension** Objective-C的Category可以在Swift中使用,无需特殊处理。Swift的Extension虽然不能直接在OC中访问,但可以通过公开相关的...
### OC485通信协议详解 #### 一、概述 OC485通信协议是一种基于RS-485物理层的通信标准,广泛应用于工业自动化领域。它利用Modbus RTU协议来实现设备间的通信与控制。本文将详细介绍OC485通信协议的基本概念、物理...
在Objective-C(OC)中,协议(@protocol)主要用于定义对象间交互的接口,它们类似于接口,但不提供默认实现。然而,在Swift中,我们可以为协议提供默认实现,使得遵循该协议的类无需手动实现所有方法。这篇教程将...
在iOS和macOS开发中,Objective-C(OC)是一种常用的语言,它引入了协议(Protocol)的概念,类似于其他语言中的接口。协议允许类之间定义一套方法,这些方法并不强制实现,但提供了统一的调用规范。正式协议是遵循...
千锋OC源码:目录 OC语言教程-第1讲-基本语法 OC语言教程-第2讲-点语法 ...OC语言教程-第7讲-协议 OC语言教程-第8讲-协议代理设计模式 OC语言教程-第9讲-Category语法 OC语言教程-第10讲-Blocks语法
- 接受许可协议。 - 点击 [Next] 继续。 - **步骤 1.2**:选择安装路径,默认为 `C:\j2sdk1.4.2_06\`。可以通过点击 [Change] 来更改安装路径。 - 点击 [Next] 继续。 - **步骤 1.3**:等待安装过程完成。 -...
总的来说,"OC初识总代码"的学习涵盖了面向对象编程的基本概念,包括类、对象、消息传递、协议等,同时可能会涉及到Objective-C在实际项目中的应用,比如UI组件的交互和数据管理。通过研究这个压缩包中的代码,初学...
Objective-C(简称OC)是苹果公司开发的一种面向对象的编程语言,主要用于iOS和macOS应用程序开发。它是C语言的超集,包含了C的所有特性,并扩展了面向对象的概念。本教程将带你深入学习OC的基础知识,帮助你掌握这...
接下来,在桥接头文件中,你可以声明任何需要在OC中使用的Swift类、结构体、枚举或协议。例如: ```objc #import // 假设你有一个在Swift中的MySwiftClass类 @class MySwiftClass; // 如果有协议,也可以这样...
在OC中,协议(Protocol)定义了一组方法,任何类都可以选择遵循这个协议。代理协议通常包含那些代理对象需要实现的方法,例如传递消息、接收事件等。例如,一个常见的代理协议可能是`UITableViewDataSource`,它...
视图通过实现`UIResponder`协议来响应触摸、键盘等事件。 8. **Block底层研究**: Block是Objective-C中的匿名函数,可以捕获并存储其定义范围内的变量。Block的内存管理与普通对象类似,分为栈Block、堆Block和强...
1. **Objective-C语法**:了解Objective-C的基本语法是使用这个转换器的前提,包括消息传递、类、协议、Category等概念。 2. **Swift兼容性**:如果这个转换器是用于Objective-C和Swift之间的转换,那么需要理解两...
Oracle Containers for J2EE (OC4J) 是Oracle公司提供的一款轻量级、高性能的J2EE应用服务器,它是Oracle应用服务器产品家族的一部分,专为开发和运行小型到中型的J2EE应用程序而设计。OC4J的独特之处在于其轻便的...
2. **声明 Swift 类和方法**:在桥接头文件中,不需要导入 Swift 文件,但可以声明 Swift 类或协议,以便 OC 可以看到它们。例如: ```objc @class SwiftClass; ``` 3. **调用 Swift 方法**:在 OC 代码中,你...
在OC中,实现`WKScriptMessageHandler`协议: ```objc - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { if ([message....
为了使JS能够调用OC的方法,我们需要实现`UIWebViewDelegate`协议中的`webView:didFinishLoadForRequest:`方法,并使用`addScriptMessageHandlerForName:handler:`方法注册一个消息处理器: ```objc webView....