我的项目中有两个函数,在几个类中都是相同的。
我无法创建公共基类,因为它们从不同的类继承(一些是UIViewControllers,一些是NSObjects等)。
我尝试过类别,但是再次,因为我没有基类,所以没有一个地方放置它们。我都不希望这些函数在所有UIViewControllers中都可用,因此创建一个类别也无济于事。
如何将此代码添加到我想要的类中而无需复制&粘贴吗
仅供记录,我正在实施dynamic log levels in cocoalumberjack,我需要添加的代码如下:
static int ddLogLevel = LOG_LEVEL_WARN;
+ (int)ddLogLevel
{
return ddLogLevel;
}
+ (void)ddSetLogLevel:(int)logLevel
{
ddLogLevel = logLevel;
}
答案 0 :(得分:1)
或许有点乱,但你可以使用#define。创建一个包含以下内容的头文件:
//LoggingCode.h
#define LOGGING_CODE static int ddLogLevel = LOG_LEVEL_WARN; \
\
+ (int)ddLogLevel \
{ \
return ddLogLevel; \
} \
\
+ (void)ddSetLogLevel:(int)logLevel \
{ \
ddLogLevel = logLevel; \
}
每当您想要使用此代码时,请确保包含头文件,并将LOGGING_CODE插入所需的位置。
#include "LoggingCode.h"
LOGGING_CODE
C预处理器将完成剩下的工作。
答案 1 :(得分:0)
由于你不能从公共类继承,你可以创建一个静态类,你可以从其他两个类中调用它。
编辑:
StaticClass.h
+(int)commonddLogLevel;
+(void)commonddSetLogLevel:(int)logLevel;
Class1.h
+(int)ddLogLevel;
+(void)ddSetLogLevel:(int)logLevel;
Class1.m
+(int)ddLogLevel {
[StaticClass commonddLogLevel];
}
+(void)ddSetLogLevel:(int)logLevel {
[StaticClass commonddSetLogLevel:logLevel];
}
Class2.h
+(int)ddLogLevel;
+(void)ddSetLogLevel:(int)logLevel;
Class2.m
+(int)ddLogLevel {
[StaticClass commonddLogLevel];
}
+(void)ddSetLogLevel:(int)logLevel {
[StaticClass commonddSetLogLevel:logLevel];
}