Objective-c之协议
协议的概念:
协议是多个类共享一个方法的列表。其实协议的概念已经说明了它本身的目的。
协议定义:
@protocol Printing
-(void) print;
@end
协议的使用:
#import <Foundation/NSObject.h>
#import "Printing.h"//这里使用是双引号
@interface Fraction:NSObject<Printing,NSCopying>{
//定义变量
}
//定义一些接口方法
@end
举例子:
Complex.h
#import <Foundation/NSObject.h>
#import "Printing.h"
@interface Complex:NSObject<Printing>{
double real;
double imaginary;
}
-(Complex*) initWithReal:(double) r andImaginary:(double) i;
-(void) setReal:(double) r;
@end
Complex.m
#import "Complex.h"
#import <stdio.h>
@implementation Complex
......
-(void) print{
//实现
}
@end
main.m
#import <stdio.h>
#import "Complex.h"
int main(int argc,const char *argv[]){
//创建一个新的实例
Complex *comp = [[Complex alloc] initWithReal : 5 andImaginary:15];
id <Printing> printable;
//print complex
printable = comp;
printf("The complex number is:");
[printable print];
printf("\n");
//判断对象是否遵守了协议规则
//这里应该是false
if([comp conformsToProtocol:@protocol(NSCopying)] == YES){
printf(".....");
}
return 0;
}
分享到:
相关推荐
1. **Objective-C基础**:Objective-C是C语言的超集,引入了Smalltalk式的面向对象特性,如消息传递、类别(Category)、协议(Protocol)等。了解这些基础知识是理解OC-图片浏览器的前提。 2. **UIImage与...
5. `LICENSE`:开源协议,规定了其他人可以如何使用和分发这个库的代码。 6. `tests` 目录:测试用例,确保代码的功能正确性和稳定性。 对于想要使用oc-client的前端开发者来说,首先需要理解OC平台的API规范,然后...
在iOS开发中,"OC-串行-BreakPoint-tableview"这一主题主要涉及到Objective-C编程语言、串行队列(Serial Queues)以及UITableView的使用。这些知识点是iOS应用开发中的核心部分,尤其是在构建用户界面时。下面我们...
例如,使用IBOutlet和IBAction连接视图和控制器,使用协议(Protocol)和代理(Delegate)模式在控制器之间进行通信,以及利用KVO(Key-Value Observing)监听模型的变化。 **总结** "MVC-OC-DEMO"是一个用...
本篇文章将深入探讨如何在Objective-C(OC)中使用`WKWebView`与JavaScript进行交互。 ### 1. `WKWebView`的引入 首先,我们需要在项目中引入`WebKit`框架,这可以通过在` Bridging-Header.h`文件中添加`#import ...
总结来说,"spi-oc-tiny.c"源代码文件是实现Linux系统对SPI设备通信的关键,它封装了SPI协议的细节,提供了与硬件交互的接口,使得应用程序可以方便地通过标准的Linux系统调用来访问SPI设备。通过对这个驱动程序的...
在iOS应用开发中,Objective-C(OC)和Swift是两种主要的编程语言。Apple自2014年推出Swift以来,它迅速获得了开发者社区的广泛欢迎,但Objective-C作为历史更悠久的语言,仍然在很多现有项目中占据主导地位。因此,...
10. **许可证文件**:如果这是一个开源项目,可能会包含LICENSE文件,明确项目的许可协议。 11. **其他工具和库**:如Webpack配置文件(webpack.config.js)、Babel配置(.babelrc)等,用于代码转换和优化。 为了...
4. `LICENSE`:项目的授权协议,定义了其他人可以如何使用和分发这个项目。 5. `src`或`rest_oc`目录:实际的源代码存放处,可能包含模块和类。 6. `tests`目录:测试代码,用于确保项目功能的正确性。 7. `docs`...
本文将详细解析"OC-高度自定义封装tabbar框架"这一主题,探讨如何通过Objective-C(OC)对原生TabBar进行自定义封装,以实现更高的灵活性和扩展性,同时保持系统的稳定性和兼容性。 首先,我们要明白原生TabBar的...
千锋OC源码:目录 OC语言教程-第1讲-基本语法 OC语言教程-第2讲-点语法 ...OC语言教程-第7讲-协议 OC语言教程-第8讲-协议代理设计模式 OC语言教程-第9讲-Category语法 OC语言教程-第10讲-Blocks语法
JS调用OC方法通常通过定义JavaScript与Native的通信协议实现,这些协议包括注入JavaScript对象或使用`WKScriptMessageHandler`。 1. **注入JavaScript对象:** - UIWebView可以使用`evaluateJavaScript:...
8. **适配器和代理模式**:应用的视图与数据之间可能通过UITableView或UICollectionView进行交互,这通常需要实现DataSource和Delegate协议,来填充和响应用户操作。 9. **代码组织**:良好的代码组织是大型项目的...
URL Scheme是一种自定义的协议,可以让应用之间通过特定的URL进行通信。例如,你可以创建一个自定义的URL Scheme,使得用户点击一个链接时,可以直接在你的应用中打开。 Universal Links则是一种更现代的解决方案...
总结来说,"OC-m3u8视频截图"涉及到的技术包括Objective-C编程,HLS流媒体协议,m3u8文件格式,以及AVFoundation框架中的视频处理功能。理解这些知识点,开发者就能有效地处理和截图m3u8视频流,为用户提供流畅且...
7. **Delegation** 和 **Notification**:在没有TabBar的情况下,应用可能需要通过代理协议或通知来监听用户的行为,并在不同视图控制器间传递数据和事件。 8. **Programmatic UI**:虽然大部分应用可能使用...
若手动实现getter和setter,需遵循特定的协议`NSKeyValueObservingOptionNew`和`NSKeyValueObservingOptionOld`。 3. **通知机制**:KVO通过`NSKeyValueChangeNotificationIsPrior`选项控制是否在改变前发送通知,...
在iOS开发中,页面间的传值是日常开发中不可或缺的一部分,尤其对于Objective-C(简称OC)的开发者来说,掌握各种传值方式能显著提高代码的灵活性和可维护性。本资料"ios-iOS-OC-页面传值的5种方法.zip"主要探讨了五...
这里,`self` 必须遵循`WKScriptMessageHandler`协议,实现`userContentController:didReceiveScriptMessage:`方法来接收来自JavaScript的消息: ```objc - (void)userContentController:(WKUserContentController ...
为了与WKWebView进行交互,例如执行JavaScript代码或接收JavaScript回调,我们需要实现`WKScriptMessageHandler`协议。通过设置`WKUserContentController`并添加用户脚本,可以监听和响应JavaScript消息。例如: ``...