在C#中声明的静态变量如下:
private const string Host = "http://80dfgf7c22634nbbfb82339d46.cloudapp.net/";
private const string ServiceEndPoint = "DownloadService.svc/";
private const string ServiceBaseUrl = Host + ServiceEndPoint;
public static readonly string RegisteredCourse = ServiceBaseUrl + "RegisteredCourses";
public static readonly string AvailableCourses = ServiceBaseUrl + "Courses";
public static readonly string Register = ServiceBaseUrl + "Register?course={0}";
如何在另一个类中调用此静态变量?
答案 0 :(得分:11)
答案:使用static
关键字。
语法: static ClassName *const variableName = nil;
(根据 Abizern 的评论更新 [已添加const
] )
更新原因(根据“Till”的评论):
static
当在函数/方法中的变量上使用时,即使在保留该变量的范围时也会保留其状态。当在任何函数/方法之外使用时,它将使该变量对其他源文件不可见 - 只有在任何函数/方法之外使用时,它才会在该实现文件中可见。
因此const
static
可以帮助编译器相应地优化它。
如果您需要有关const
与static
一起使用的更多说明,我在此处找到了一个漂亮的链接:const static。
使用:
您可能已经在tableview的委托- cellForRowAtIndexPath:
static NSString *CellIdentifier = @"reuseStaticIdentifier";
答案 1 :(得分:5)
static NSString *aString = @""; // Editable from within .m file
NSString * const kAddressKey = @"address"; // Constant, visible within .m file
// in header file
extern NSString * const kAddressKey; // Public constant. Use this for e.g. dictionary keys.
据我所知,公共静态不是Objective-C的内置功能。您可以通过创建一个返回静态变量的公共类方法来解决此问题:
//.h
+ (NSString *)stringVariable;
//.m
static NSString * aString;
+ (NSString *)stringVariable
{
return aString;
}
大多数静态对象在编译时无法初始化(我认为实际上只有字符串)。如果需要初始化它们,可以在+ (void)initialize
方法中执行此操作,只要首次引用该类,就会懒惰地调用它。
static UIFont *globalFont;
+ (void)initialize
{
// Prevent duplicate initialize http://www.mikeash.com/pyblog/friday-qa-2009-05-22-objective-c-class-loading-and-initialization.html
if (self == [ClassName class]) {
globalFont = [UIFont systemFontOfSize:12];
}
}
答案 2 :(得分:2)
Objective C是C / C ++的超级集合,所以对于静态它遵循C ++ / C约定,你应该能够使用它
static <<datatype>> <<variableName>> = initialization
希望你会尝试这种方式,如果有任何错误,如果是,请在问题中添加更多清晰度
如果NSString
的情况使用以下内容,
static NSString *pString = @"InitialValue";
如果您必须修改代码中的NSString
,请确保它必须为NSMutableString
。
希望有帮助...