0

我想创建一个 Utils 文件,拥有一些功能并在某些类中使用它们,但我不知道该怎么做。

我有:

实用程序.h

#import <Foundation/Foundation.h>

@protocol Utils 

@optional

-(NSString*)colorToHex:(UIColor*)color;

@end

@interface Utils : NSObject 

@end

实用程序

#import "Utils.h"

@implementation Utils

-(NSString*)colorToHex:(UIColor*)color{
    return @"Working";
}

@end

mainClass.h(片段)

@interface StyleTableViewController : UITableViewController <Utils>

mainClass.m(调用)

NSString *myString = [self colorToHex:color];
NSLog(@"%@",myString);

它在调用该函数时崩溃。我应该怎么办?

谢谢

4

2 回答 2

2

当您声明您的类符合协议(通过添加)时,您告诉编译器该类实现了协议中定义的所有方法。协议不是一个类——它只是一个方法列表。因此,在您的代码中,您有一个名为 Utils 的协议和一个名为 Utils 的类。您符合协议,但没有实现方法,这就是您尝试调用 colorToHex 时程序崩溃的原因。在您的情况下,您需要做的是在 StyleTableViewController 中创建一个 Util 对象并使用它来调用 colorToHex 方法,或者使 colorToHex 方法成为类方法并在需要时从 Util 类中调用它。另一种选择是让 StyleTableViewController 成为 Utils 的子类,但我怀疑这将是一个好的设计。

于 2012-07-30T21:29:16.933 回答
1

另一种选择是将类别添加UtilsUIColor. 不完全符合您的要求,但它比使用协议更优雅地解决了您的问题。

于 2012-07-30T22:11:51.827 回答