我只是想避免警告(没有编译器抑制),但不想在我的文件中添加一些包含。这是我的代码:@protocolMyProto;//...Protocol*p=@protocol(MyProto);这是我收到的警告:@protocolisusingaforwardprotocoldeclarationofMyProto[-Wat-protocol] 最佳答案 使用协议(protocol)文字(@protocol)需要在编译时链接到协议(protocol),这需要编译器查看协议(protocol)的定义。我不明白您为什么反对“向我的文件添加一些包
在DataProvider.h@protocolNewDataProviderProtocol-(void)fetchNewData;@end在SomeClass#importDataProvider.h@interfaceSomeClass:NSObject@end当我尝试使SomeClass符合NewDataProviderProtocol时,它说,没有名为“NewDataProviderProtocol”的类型或协议(protocol)这很奇怪,因为我已经导入了声明协议(protocol)的headerDataProvider.h。所以我在SomeClass的接口(interfa
ModelViewController政策规定View不能拥有数据,应该使用委托(delegate)从ViewController请求数据。但是对于exapmleUILabel呢?Controller直接与Outlet对话,例如:self.textfield.text=@"显示此文本"。(这里没有delegate?UILabel也是view的一种?) 最佳答案 对于像在UILabel中设置文本这样简单的事情,委派会不必要地复杂。用UILabel破坏MVC的一个例子是使用它的text属性作为应用中其他地方使用的一段数据的唯一存储。例如
我有一个基类SLBaseViewController,它是UIViewController的子类,并希望它的所有子类都符合协议(protocol):@protocolSLLocalizable-(void)localize;@end问题是我不需要SLBaseViewController来符合协议(protocol)本身,但我需要编译器在子类不符合时警告我。我尝试过的:像这样定义基类:@interfaceSLBaseViewController:UIViewController在这种情况下,编译器告诉我SLBaseViewController没有实现localize方法。使localiz
当一个协议(protocol)要求的方法还没有实现时,Xcode给出一个警告警告:协议(protocol)“xxx”中的方法“xxx”未实现我有一个像UITableView这样的自定义View,它有一个dataSource属性。为了确保dataSource不为nil并且响应我这样做的方法NSAssert(self.dataSource!=nil,@"menu'sdataSourceshouldn'tbenil");if([self.dataSourcerespondsToSelector:@selector(menu:numberOfRowsInColumn:)]){return[se
大家好,到目前为止,我已经用ASIHTTPRequest做了很多工作,并在我的iOS应用程序中多次使用它,但是在我的应用程序的一个区域中,我添加了另一个asihttprequest方法,它无法正常工作。首先必须要说的是,我试图分散下载和解析数据的负载的原因。如果我在subview上执行此操作,则需要2-3秒才能完成第二个xml工作表并取出所有相关值..如果我在这个主视图上这样做,人们看不到任何负载等,那么当返回到subview时,它应该看起来几乎是即时的。我不知道这有多正确,但我认为这样做可以让应用感觉更快速。所以我将它的asihttprequest方法设置为与其他可以工作但不使用缓存
我在协议(protocol)中声明了这个IBOutlet:@protocolSomeProtocol@property(nonatomic,strong)IBOutletUIView*view;@end然后有一个继承自这个协议(protocol)的类://.h@interfaceSomeClass:NSObject@end//.m@implementationTSNFactoryViews@synthesizeview=_view;@ned在xib文件中,我将SomeClass设置为类所有者,这样我就可以看到view导出并将其连接到适当的xib实例。在XCode4中,我对这个概念没有异
我正在尝试实现一个协议(protocol)。我查看了文档here我理解这些概念,尽管我认为我遗漏了一些东西。我正在尝试创建一个View,用户点击TableView中的文件名会触发“didSelectRowAtIndexPath”,这将反过来通知委托(delegate)人用户已经选择了一个文件(在委托(delegate)中触发didSelectFileName)并传递文件名。我已经声明协议(protocol)如下;@protocolFileList-(void)didSelectFileName:(NSString*)fileName;@end我的问题是:如何设置“fileName”值,
也许我误解了委托(delegate)模式,但有人可以解释一下当我只定义一个协议(protocol)和委托(delegate)属性时如何让委托(delegate)调用从一个类调用到2个类吗?运行下面的代码只会调用detail2VC中的doSomething,但我想在两者中都有消息。我可以定义符合协议(protocol)的第二个属性,或者定义第二个协议(protocol),但我认为这不是正确的方法。ViewController.h#import@protocolViewControllerDelegate@optional-(void)doSomething;@end@interfaceV
我在objective-c中遇到了一个奇怪的问题。这是代码:STViewController.h#import@interfaceSTViewController:UIViewController+(void)myStaticMethod;@endSTViewController.m#import"STViewController.h"@implementationSTViewController-(void)viewDidLoad{[superviewDidLoad];[STViewControllermyStaticMethod];}+(void)myStaticMethod{UI