草庐IT

UIApplicationDelegate_Protocol

全部标签

Objective-C: block vs. 选择器 vs. 协议(protocol)

我经常发现自己正在编写可在整个项目中重复使用的“实用程序”类。例如,假设我有一个“通讯录”View。我可能想使用我的地址簿来选择向谁发送电子邮件,或者将谁添加到session请求中。我会开发这个ViewController,以便电子邮件Controller和sessionController都可以使用它,并通过某种回调机制让调用者知道用户要么完成了从通讯录中选择某人,要么他们取消。在这种情况下,基本上可以采取四种(合理的)方法;在AddressBookController上创建“AddressBookDelegate”协议(protocol)和相应的委托(delegate)属性。然后使

objective-c - Objective-C 中的非正式协议(protocol)?

我想知道是否有人可以解释什么是ObjectiveC中的非正式协议(protocol)?我尝试在苹果文档和其他一些书籍上理解它,但我的头脑仍然在旋转,所以如果有人可以举例说明,我将非常感激。谢谢。 最佳答案 非正式协议(protocol),正如Jonnathan所说,通常是在NSObject上声明的一个类别,没有相应的实现(最常见的是——很少有一个在NSObject上提供虚拟实现)。从10.6(以及在iPhoneSDK中)开始,不再使用此模式。具体来说,在10.5(及之前)中声明如下:@interfaceNSObject(NSAppl

iphone - 检查是否已实现可选协议(protocol)方法

有谁知道检查是否已实现可选协议(protocol)方法的最佳方法。我试过了:if([self.delegaterespondsToSelector:@selector(optionalProtocolMethod:)])委托(delegate)在哪里:iddelegate;但是,我收到一条错误消息,指出在协议(protocol)中找不到函数respondsToSelector:! 最佳答案 respondsToSelector:是NSObject协议(protocol)的一部分。在MyProtocol中包含NSObject应该可以解

objective-c - 找不到协议(protocol)声明

我有两个ViewControllerA和B,它们都以彼此为代表。当我除了在头文件的开头定义协议(protocol)和#import另一个头文件之外什么都不做时,我得到了两个错误,类似于-cannotfindprotocoldeclarationfor"BDelegate",whichwasshowinginA.h(whereIwrote)cannotfindprotocoldeclarationfor"ADelegate",whichwasshowinginB.h(whereIwrote)查看网上,人们之前曾写过头文件的循环包含可能会导致问题。他们建议使用#include或@class

objective-c - @interface 和 @protocol 解释?

我想知道Objective-C中的@interface是什么?它只是程序员想要声明变量、类名或方法名的地方吗……?我不确定它是否像Java中的接口(interface)。还有关于Objective-C中的@protocol。看起来更像是Java中的接口(interface)。谁能给我详细的解释。我真的很感激。 最佳答案 接口(interface)是定义类的属性和操作的地方。你也必须制定实现。协议(protocol)就像java的接口(interface)。例如@protocolPrinting-(void)print;@end可以实

objective-c - 在Objective-C中将一个类的实例转换为@protocol

我有一个对象(UIViewController),它可能符合也可能不符合我定义的协议(protocol)。我知道我可以确定对象是否符合协议(protocol),然后安全地调用方法:if([self.myViewControllerconformsToProtocol:@protocol(MyProtocol)]){[self.myViewControllerprotocolMethod];//但是,XCode显示警告:warning'UIViewController'maynotrespondto'-protocolMethod'阻止此警告的正确方法是什么?我似乎无法将self.myV

objective-c - 在 Objective-C 类中导入 Swift 协议(protocol)

我尝试将名为AnalyticProtocol的Swift协议(protocol)导入名为AnalyticFactory的Objective-C类。protocolAnalyticProtocol{}我从现有的Objective-C项目开始(我没有使用xCode创建新的Swift项目,也没有找到如何在xCode6中将我的Objective-C项目配置为Swift项目)。在我的Swift文件中,我包含了名为MyProjectName-Swift.h的.h文件,但编译器返回一个错误,告诉我它没有存在。所以,我创建了一个名为MyProjectName-Swift.h的.h文件,它实际上是空的(

objective-c - 如何使一个类符合 Swift 中的协议(protocol)?

在Objective-C中:@interfaceCustomDataSource:NSObject@end在swift中:classCustomDataSource:UITableViewDataSource{}但是会出现错误信息:类型“CellDatasDataSource”不符合协议(protocol)“NSObjectProtocol”类型“CellDatasDataSource”不符合协议(protocol)“UITableViewDataSource”正确的方法应该是什么? 最佳答案 Type'CellDatasDataS

iphone - 如何使用可选方法创建协议(protocol)?

我注意到在iPhoneSDK中定义的几个协议(protocol)中标记为可选的方法,例如UIActionSheetDelegate协议(protocol)。如何定义自己的协议(protocol),并将其中一些方法设置为可选? 最佳答案 来自“FormalProtocols”上的Apple页面:OptionalProtocolmethodscanbemarkedasoptionalusingthe@optionalkeyword.Correspondingtothe@optionalmodalkeyword,thereisa@requ

iphone - 如何处理包含属性的 Objective-C 协议(protocol)?

我已经看到Objective-C协议(protocol)的使用方式如下:@protocolMyProtocol@required@property(readonly)NSString*title;@optional-(void)someMethod;@end我已经看到使用这种格式而不是编写子类扩展的具体父类(superclass)。问题是,如果你遵守这个协议(protocol),是否需要自己合成属性?如果你正在扩展一个父类(superclass),答案显然是否定的,你不需要。但是如何处理协议(protocol)需要遵守的属性呢?据我了解,您仍然需要在符合需要这些属性的协议(protoc