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

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

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

视频: 安装ios苹果手机抓包神器以及解决设备共存限制 2024
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应用程序的方法 - 虚拟

编辑的选择

特权的基础知识在Oracle 12c - 虚拟机

特权的基础知识在Oracle 12c - 虚拟机

用户可以在Oracle 12c数据库中完成。您可能希望允许用户能够登录,但是您可能需要限制用户是否可以执行以下任一任务:访问某些数据开始...

Oracle 12c恢复管理器(RMAN)目录 - 傻瓜

Oracle 12c恢复管理器(RMAN)目录 - 傻瓜

的基础知识Oracle 12c恢复管理器(RMAN)环境,请考虑恢复目录。恢复目录是所有RMAN配置参数,备份操作和元数据的存储库。该目录可以无限期地存储备份信息。如何在Oracle 12c中选择目录模式RMAN提供了两种用于存储备份数据的选项:NOCATALOG ...

如何验证,查看和关闭Oracle 12c审计 - 傻瓜

如何验证,查看和关闭Oracle 12c审计 - 傻瓜

打开数据库中的审计记录,跟踪您制定的审计,以便您了解所做的事情。幸运的是,Oracle 12c在数据库中提供了一些视图来帮助您跟踪自己的操作:要验证您为审计配置的系统特权,请使用视图AUDIT_UNIFIED_POLICIES。要查看...

编辑的选择

Drupal友好的网页寄存公司 - 傻瓜

Drupal友好的网页寄存公司 - 傻瓜

网页寄存公司为您提供访问Web服务器,您可以在其中安装Drupal并使您的网站在Web上可见。一些公司为您安装Drupal或为您提供一键安装,为您节省了一些工作量。如果您决定自己跳过Drupal的安装,请考虑通过以下方式之一获取帐户...

Drupal花园功能 - 傻瓜

Drupal花园功能 - 傻瓜

让您有机会查看和使用所有Drupal花园功能,可以创建一个新的站点,然后选择自定义选项而不是其中一个已安装的模板:确保已经登录,然后单击我的站点链接。这样做打开了Drupal花园站点经理。点击创建...

Drupal园林主题生成器 - 傻瓜

Drupal园林主题生成器 - 傻瓜

Drupal花园设置完成后,有一些乐趣和玩你的网站上的主题。使用Drupal Gardens Theme Builder控制网站的外观是与安装Drupal自身副本不同的主要方式。但是你不会错过太多...

编辑的选择

更改MYOB中的文本和日期 - 虚拟人物

更改MYOB中的文本和日期 - 虚拟人物

MYOB为您提供了许多快捷方式以帮助简化任务。例如,您可以像在任何文字处理器中那样在MYOB中复制和粘贴文本。以下是快捷方式:按键组合快捷键结果Ctrl-A选择所有高亮显示的文本Ctrl-C复制文本Ctrl-V粘贴文本Ctrl-X删除或剪切文本Ctrl-Z取消最后一位...

在Salesforce中创建视图。当您单击Salesforce中的某个选项卡以访问特定对象(例如“帐户”,“联系人”或“个案”)时,您可以在对象主页上找到自己的服务云 - 虚拟

在Salesforce中创建视图。当您单击Salesforce中的某个选项卡以访问特定对象(例如“帐户”,“联系人”或“个案”)时,您可以在对象主页上找到自己的服务云 - 虚拟

主页,如果你选择案例,如图所示)。案例主页。当您点击Salesforce中的一个选项卡以访问特定的对象(例如,帐户,联系人或个案)时,您可以看到一些较大的,勾勒出的最近案例,报告和矩形的矩形。