在objective-c中模拟静态类变量

原创 2013年12月02日 20:05:53

最近在写的代码,做了一个简单设计:

在类UserData中保存运行时的必要信息,比如当前登录用户的id,所属的企业id,token是否失效等。这些信息都写在UserDefaults里,不缓存,每次需要时重新从UserDefaults里加载

然后客户端代码并不直接操作UserDefaults,而是通过一个辅助类UserDataUtil,得到UserData对象。UserData的组装是由UserDataUtil来完成的。其实也可以考虑把UserData和UserDataUtil合并成一个类,这样当UserData增加字段时,就不需要在两处修改了,似乎也不错,不过这次没有这么做

代码中有一个简单的需求,就是需要一系列静态类变量,来保存所有UserDefaults的KEY,这在JAVA中非常容易实现:

public class UserDataUtil {
	
	public static final String ENTERPRISE_ID_KEY = "enterprise_id";

}

不过在objective-c里,似乎没有静态类变量这个概念。。最后写了一个类似的类,来实现这种效果:

@interface YLSUserDataUtil : NSObject

+(YLSUserData*) readUserData;

+(NSString*) ID;
+(NSString*) USER_ID;
+(NSString*) ENTERPRISE_ID;;

@end

上面是.h文件,定义了一组静态方法。下面是.m文件:

static NSString* ID = @"id";
static NSString* USER_ID = @"userId";
static NSString* ENTERPRISE_ID = @"enterpriseId";

@implementation YLSUserDataUtil

+(NSString*) ID
{
    return ID;
}

+(NSString*) USER_ID
{
    return USER_ID;
}

+(NSString*) ENTERPRISE_ID
{
    return ENTERPRISE_ID;
}

+ (YLSUserData*) readUserData
{
    // 从UserDefaults中加载数据,组装UserData并返回
}

@end

最后是使用这些静态变量的客户端代码:

NSString *key = [YLSUserDataUtil ENTERPRISE_ID];

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS --- Objective-C中类的成员变量与属性

在Objective-C的类与对象的概念中. 成员变量与属性的区别与联系一直没有搞清楚. 直到学习了慕课网上的这个课程Objective-C面向对象初体验, 才算真正有了点感觉了. 最关键的结论就是:...
  • icetime17
  • icetime17
  • 2015年05月06日 16:58
  • 5975

objective-c中的静态函数实现

根据你的情况在哪个代码文件里增加,我是在AppDelegate里添加的 1、在AppDelegate.h中增加函数声明 + (NSString*)getCurrentTimeString; 2、...
  • startexcel
  • startexcel
  • 2012年02月02日 14:30
  • 4773

不同类型的变量在内存中存储的详细情况

一、int型变量在内存中存储详细情况 //By Richard #include #include int main() { int i1=0; int i2=1; in...
  • qingkong8832
  • qingkong8832
  • 2011年08月15日 11:08
  • 3118

python中的实例方法、静态方法、类方法、类变量和实例变量

个人理解,若有误,望指正,多谢! 实例方法(obj_func)和实例变量(var)需要绑定到实例,实例方法可以调用实例变量、类变量和实例方法、静态方法、类方法 静态方法:静态方法是一种普通函数,就...
  • shouwangzhelv
  • shouwangzhelv
  • 2016年04月22日 23:35
  • 952

Objective-C语法-数组NSArray和可变数组NSMutableArray

Objective-C的数组比C++,Java的数组强大在于,NSArray保存的对象可以是不同的对象。但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象...
  • JackJia2015
  • JackJia2015
  • 2016年01月18日 17:32
  • 721

Objective-C的自动释放池(autoreleasepool)、静态方法快速创建对象

自动释放池(autorelease pool) 1、是OC里面的一种内存自动回收机制,一般可以将一些临时变量添加到自动释放池中,统一回收 2、当自动释放池销毁时,池里面的所有对象都会调用一次rel...
  • Love_JavaProgram
  • Love_JavaProgram
  • 2013年07月26日 15:48
  • 2045

objective-c 类和对象中静态数据成员和静态成员函数(类方法)详解

作为初学者,相信大家都对objective-c的静态数据成员和静态成员函数都挺纠结的,我现在和大家分享下我对这个知识点的理解,请大家多多指点.... 如果大家学过C++,那么都应该知道和了解静态数据...
  • ComeOnTom
  • ComeOnTom
  • 2012年05月03日 17:19
  • 9586

【Java 基础】Java 局部变量、实例变量、类变量(静态变量)区别

Java 局部变量、实例变量、类变量(静态变量)区别Java 局部变量实例变量类变量静态变量区别局部变量 实例变量 类变量静态变量 伪代码说明 实例变量与类变量区别1. 局部变量:局部变量是类的方法中...
  • u012733519
  • u012733519
  • 2016年06月03日 12:24
  • 2734

Python 类方法,实例方法,类变量,实例变量

创建一个Person类class Person(object): per_v = 'per_v' # 创建一个类变量 def __init__(self, name, age): ...
  • u011989015
  • u011989015
  • 2017年04月21日 01:17
  • 245

[Objective-C] 哪些变量默认初始化为0

参考: http://stackoverflow.com/questions/1786781/are-instance-variables-set-to-nil-by-default-in-objec...
  • yasi_xi
  • yasi_xi
  • 2015年07月07日 09:25
  • 1839
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在objective-c中模拟静态类变量
举报原因:
原因补充:

(最多只允许输入30个字)