草庐IT

SMB1Protocol

全部标签

objective-c - 在 Objective-C 中定义协议(protocol)的类别?

在Objective-C中,我可以将方法添加到具有类别的现有类中,例如@interfaceNSString(MyCategory)-(BOOL)startsWith:(NSString*)prefix;@end是否也可以使用协议(protocol)来执行此操作,即如果有NSString协议(protocol),例如:@interface(MyCategory)-(BOOL)startsWith:(NSString*)prefix;@end我想这样做,因为我对NSObject(类)有几个扩展,只使用公共(public)NSObject方法,并且我希望这些扩展也可以与实现协议(protoc

objective-c - Objective C : Given a Class id, 我可以检查这个类是否实现了某个协议(protocol)?还是有一定的选择器?

我想将它用于对象工厂:给定一个字符串,创建一个类,如果该类支持协议(protocol)(使用Create()方法)然后分配该类并调用创建。 最佳答案 NSString*className;//assumethisexistsClassclass=NSClassFromString(className);if([classconformsToProtocol:@protocol(SomeProtocol)]){idinstance=[[classalloc]init];[instancecreate];}

iphone - Objective-C 中的正式协议(protocol)和非正式协议(protocol)有什么区别?

Objective-C中的正式协议(protocol)和非正式协议(protocol)有什么区别? 最佳答案 来自OfficialDocumentationFormalandInformalProtocolsTherearetwovarietiesofprotocol,formalandinformal:AninformalprotocolisacategoryonNSObject,whichimplicitlymakesalmostallobjectsadoptersoftheprotocol.(Acategoryisalangu

objective-c - Xcode:可以为协议(protocol)接口(interface)所需的方法自动创建 stub 吗?

来自Eclipse/Java背景,我最喜欢的功能之一是能够快速排除接口(interface)所需的所有方法。在Eclipse中,我可以从源菜单中选择“覆盖/实现”来为接口(interface)的任何方法生成stub方法。我想在Objective-C中做同样的事情。例如,如果我声明一个实现“NSCoding”协议(protocol)的类,我希望Xcode自动生成实现该协议(protocol)所需的方法。不得不查找然后复制/粘贴我尝试实现的每个协议(protocol)所需方法的签名,这令人沮丧。我一直在尝试找出这是否可能,但还没有发现任何有希望的东西。这在XCode中可行吗?

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