社交媒体 如何使用协议定义适用于IOS应用程序的方法 - 虚拟

如何使用协议定义适用于IOS应用程序的方法 - 虚拟

视频: 安装ios苹果手机抓包神器以及解决设备共存限制 2025

视频: 安装ios苹果手机抓包神器以及解决设备共存限制 2025
Anonim

协议定义了可以由任何类实现的一组方法。将协议看作定义类必须实现的接口。协议通常用于指定委托对象的接口。

使用协议特性,可以避免强制子类化以创建多态类。 Objective-C(与C ++不同)不允许类有多个超类。因此协议是Objective-C中的一个重要特性,因为它不允许多重继承。

<!当一个类实现协议中的方法时,该类被称为

符合 协议。 协议的定义与类的接口的定义类似。但是,协议没有父类或实例变量。下面是一个来自后缀计算器程序的协议定义(可打印)的例子:

@protocol Printable - (void)printMe; //我可以省略@required,因为它是默认的@optional - (NSString *)printMeToString; -d

随着Objective-C 2.0的到来(甚至非常激动人心),协议方法可以是必需的(默认的)或可选的。

<!这里是StackOfInteger的声明,声明它将实现协议:@interface StackOfInteger:NSObject … -d

以下是StackOfInteger类中协议的实现:
@implementation StackOfInteger;其他的StackOfInteger方法… ///////////实现Printable协议的方法//////////// - (void)printMe {int k,stackCount = [elements count]; NSLog(@“Stack-> Last>%dlast); for(k = 0; k%@

注意printMeToString方法没有实现,因为它是可选的

<! - 3 - > <一个程序可以测试一个对象是否符合一个协议,下面的代码包含了这个测试的例子(取自该示例的主程序):

printf(“Testing conformance to如果([myStack conformsToProtocol:@protocol(Printable)]){printf(“Using protocol methodsn”); [myStack printMe];} else {NSLog(@“Object not conform to protocol%@ n”, @protocol(Printable));} id someObject = [[PostfixCalculator alloc] initWithExpression:@“44 55 *”]; if(![someObject conformsToProtocol:@protocol(Printable)]){NSLog(@“Object does not conform to因为myStack对象符合协议,所以它的printMe和printMeToString方法被调用,因为someObject(这是类型id使得这个例子更有意义)不符合Printable协议,所以测试符合性失败。

也可以使用方法respondsToSelector测试是否存在可选的方法。

你可以简单地通过实现该协议定义的方法使一个类采用协议。也就是说,你不必在其接口中声明协议。但是,即使该类实现了协议方法,它也会

而不是

符合协议,并且将不能通过前面的一致性测试。

如何使用协议定义适用于IOS应用程序的方法 - 虚拟

编辑的选择

在QuickBooks Online中使用批发帐单 - 虚拟

在QuickBooks Online中使用批发帐单 - 虚拟

QuickBooks Online为会计专业人员提供免费程序。您可以注册批发价格计划,也可以免费使用QBOA。如果你选择这样做(这是一个不错的选择!),你将需要知道如何管理的事情。从您的批发帐单订阅中删除客户有时候,事情并不是这样...

基于零基础的预算与QuickBooks 2012 - 傻瓜

基于零基础的预算与QuickBooks 2012 - 傻瓜

零基预算是一个非常有用和常用的预算策略在使用QuickBooks 2012之前,您应该先了解一下。基于零的预算与顶级预算相反。零基预算从下到上工作。零基预算始于个人收入,费用,资产,负债和所有者权益账户。它检查一个特定的...

在Sage Timeslips中10个有用的键盘快捷键 - 虚拟键盘

在Sage Timeslips中10个有用的键盘快捷键 - 虚拟键盘

键盘快捷键可以是Sage Timeslips 。启动或保存一张单据,将昨天,今天或明天的日期插入日期字段,并用一个或两个按键打开和关闭定时器。以下是十大最爱。按下它做什么Ctrl + N开始一个新的投票,而工作在...

编辑的选择

可以在Photoshop Elements 11中的任意形状图层上绘制多个图形 - 虚拟模型

可以在Photoshop Elements 11中的任意形状图层上绘制多个图形 - 虚拟模型

Photoshop Elements 11中创建的任何形状图层上的图形。您可以按照与选择相同的方式添加,减去,排除重叠和相交形状。请遵循以下步骤:创建第一个形状后,在工具选项:添加到形状区域中选择一个状态按钮:...

使用读卡器将图像下载到Mac上 - 傻瓜

使用读卡器将图像下载到Mac上 - 傻瓜

您的相机可能有一个USB端口,电缆,您可以使用下载您的图像。这种方法使用相机电池电力,也相当缓慢。如果您使用读卡器,则会更快地将图像存入计算机。如果您下载了大量的图像,请考虑购买FireWire读卡器; ...

在Photoshop Elements 10中创建形状图层后,在Photoshop Elements 10中绘制多个图形 - 虚拟形状

在Photoshop Elements 10中创建形状图层后,在Photoshop Elements 10中绘制多个图形 - 虚拟形状

可以在该图层上绘制其他形状。您可以按照与选择相同的方式添加,减去,重叠和相交形状。请记住,当您在元素中创建一个形状时,您正在创建一个基于矢量的元素。向量在数学上描述形状。 ...

编辑的选择

在您的IOS应用程序中添加模态视图 - 在iPhone和iPad上虚拟视图

在您的IOS应用程序中添加模态视图 - 在iPhone和iPad上虚拟视图

对于那些希望用户(或用户想要)在应用程序流之外执行某些操作的情况非常适用。而不是使用带有后退按钮的导航控制器,而是显示一个模式视图,其中的控件允许用户选择一个动作或...

Android应用程序开发:你的Twitter应用程序的文件 - 傻瓜

Android应用程序开发:你的Twitter应用程序的文件 - 傻瓜

,这个Android Studio项目包含大约100个文件和大约170个不同的文件夹。要制作Android Twitter应用程序,您需要专注于该项目的MainActivity。 java文件。但其他一些文件需要注意。 Twitter4J API jar文件Android没有内置的通信支持...