如何在@protocol中声明变量

时间:2014-01-09 15:05:59

标签: iphone objective-c interface ios7 protocols

在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

但是没有正确答案!

4 个答案:

答案 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";