010.Class variable 类变量(模拟)
2015-10-27 16:55
204 查看
--------------- main.m ---------------
#import <Foundation/Foundation.h>
@interface FKUser : NSObject
+ (NSString*) nation; // 用于获取类变量
+ (void) setNation: (NSString*) newNation;
// 用于修改类变量
@end
@implementation FKUser
static NSString* nation = nil;
+ (NSString*) nation
{
return nation;
}
+ (void) setNation: (NSString*) newNation
{
if(![nation isEqualToString: newNation])
{
nation = newNation;
}
}
@end
int main()
{
[FKUser setNation:@"中国"]; // 为FKUser的类变量赋值
NSLog(@"FKUser的nation类变量为:%@",
[FKUser nation]); // 访问FKUser的类变量
}
一、编写本节代码的具体步骤:
1.可仿照第二章001节的代码编写步骤。可以把类的接口文件,类的实现文件写在main.m文件中。
二、本节代码涉及到的知识点:
1.OC并不支持类似于Java的类变量。
2.但我们可以通过内部全局变量来模拟类变量。
3.用static修饰全局变量,可限制该全局变量只能在当前源文件中使用。
4.为了模拟类变量,可以在@implementation部分定义一个用static修饰的全局变量,
并提供一个类方法来暴露该全局变量。
#import <Foundation/Foundation.h>
@interface FKUser : NSObject
+ (NSString*) nation; // 用于获取类变量
+ (void) setNation: (NSString*) newNation;
// 用于修改类变量
@end
@implementation FKUser
static NSString* nation = nil;
+ (NSString*) nation
{
return nation;
}
+ (void) setNation: (NSString*) newNation
{
if(![nation isEqualToString: newNation])
{
nation = newNation;
}
}
@end
int main()
{
[FKUser setNation:@"中国"]; // 为FKUser的类变量赋值
NSLog(@"FKUser的nation类变量为:%@",
[FKUser nation]); // 访问FKUser的类变量
}
一、编写本节代码的具体步骤:
1.可仿照第二章001节的代码编写步骤。可以把类的接口文件,类的实现文件写在main.m文件中。
二、本节代码涉及到的知识点:
1.OC并不支持类似于Java的类变量。
2.但我们可以通过内部全局变量来模拟类变量。
3.用static修饰全局变量,可限制该全局变量只能在当前源文件中使用。
4.为了模拟类变量,可以在@implementation部分定义一个用static修饰的全局变量,
并提供一个类方法来暴露该全局变量。
相关文章推荐
- 物理Data Guard中哪个进程处理Redo GAP
- curl 相关资料总结
- Sort Colors
- Hough变换-理解篇
- JSP基础语法
- 第 四 十 二 天:Tomcat 的 相 关 问 题
- GMM混合高斯模型理论基础(基于EM算法)
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- 使用ViewPager实现自动无限循环的轮播
- UML学习笔记之活动图
- Leetcode -- Max Points on a Line
- input事件
- 011.Singleton 单例模式
- swift算法实践(2)
- 012.private protect public 访问控制符
- Android资源管理
- GCD 深入理解(二)
- java 线程中unchecked exception处理
- JNI编程中如何传递参数和返回值。
- iOS 国际化多语言设置 xcode7