在Java中,我有一个这样的类:
public interface Test {
public final static String TAG = "Tag";
}
其他类能够实现此接口并在我的界面中使用声明的变量!
现在我想在Objective C中做同样的事情,我找到了Protocols并尝试了这样:
@protocol Test <NSObject>
NSString *const TAG = @"Tag";
@end
但那没用!什么是正确的方法?!
更新:
这个问题正是我想要的:
how to do it on objective-c: extending protocol and interface like in java
但是没有正确答案!
答案 0 :(得分:1)
在研究之前询问是一种可怕的习惯。
在Java public final static String TAG =“Tag”;就像在Objective-C中创建一个全局常量一样。只是声明协议的一面。
static const NSString *TAG = @"Tag";
@protocol Test <NSObject>
-(...)...
@end
答案 1 :(得分:1)
像这样:
@protocol Test <NSObject>
@property (readonly) NSString *TAG;
@end
并且在实现此协议的类中,您需要提供:
- (NSString *)TAG {
return @"Tag";
}
答案 2 :(得分:1)
在头文件中声明一个全局变量:
extern NSString * const kTAG;
在一个实现文件中定义并初始化变量:
NSString * const kTAG = @"Tag";
答案 3 :(得分:0)
如果你想在协议中使用NSString作为属性:
@protocol Test <NSObject>
@property (nonatomic, retain) NSString* TAG;
@end
如果你想使用常量 - 这实际上不是变量:)只需将它放在协议块之外:
static NSString* const *const TAG = @"Tag";