如何在objective-C中创建协议
我想创建一个Utils文件,拥有一些函数并在一些类中使用它们,但我不知道如何做到这一点 我有: Utils.h如何在objective-C中创建协议,objective-c,protocols,Objective C,Protocols,我想创建一个Utils文件,拥有一些函数并在一些类中使用它们,但我不知道如何做到这一点 我有: Utils.h #import <Foundation/Foundation.h> @protocol Utils @optional -(NSString*)colorToHex:(UIColor*)color; @end @interface Utils : NSObject @end mainClass.h(代码段) 当它调用函数时崩溃。我该怎么办 感谢当您声明您的
#import <Foundation/Foundation.h>
@protocol Utils
@optional
-(NSString*)colorToHex:(UIColor*)color;
@end
@interface Utils : NSObject
@end
mainClass.h(代码段)
当它调用函数时崩溃。我该怎么办
感谢当您声明您的类符合协议(通过添加)时,您会告诉编译器该类实现协议中定义的所有方法。 协议不是一个类,它只是一个方法列表。所以在代码中,有一个协议调用Utils,还有一个类叫做Utils。您遵守了协议,但没有实现这些方法,这就是为什么当您试图调用colorToHex时程序崩溃的原因。
在本例中,您需要做的是在StyleTableViewController中创建一个Util对象,并使用它调用colorToHex方法,或者使colorToHex方法成为类方法,并在需要时从Util类调用它。另一种选择是使StyleTableViewController成为UTIL的子类,但我怀疑这是一种好的设计。当您声明您的类符合协议(通过添加)时,您会告诉编译器该类实现协议中定义的所有方法。 协议不是一个类,它只是一个方法列表。所以在代码中,有一个协议调用Utils,还有一个类叫做Utils。您遵守了协议,但没有实现这些方法,这就是为什么当您试图调用colorToHex时程序崩溃的原因。
在本例中,您需要做的是在StyleTableViewController中创建一个Util对象,并使用它调用colorToHex方法,或者使colorToHex方法成为类方法,并在需要时从Util类调用它。另一个选择是使StyleTableViewController成为UTIL的子类,但我怀疑这是一个好的设计。另一个选择是将类别
UTIL
添加到UIColor
。这不完全是您要求的,但它比使用协议更优雅地解决了您的问题。另一种选择是将类别Utils
添加到UIColor
。不完全是您要求的,但它比使用协议更优雅地解决您的问题。我不确定您要做什么以及这与协议有什么关系?我不确定您要做什么以及这与协议有什么关系?我完全不了解协议的用法,谢谢您的解释!我根本不懂协议的用法,谢谢你的解释!
#import "Utils.h"
@implementation Utils
-(NSString*)colorToHex:(UIColor*)color{
return @"Working";
}
@end
@interface StyleTableViewController : UITableViewController <Utils>
NSString *myString = [self colorToHex:color];
NSLog(@"%@",myString);