IOS开发之---static变量
2013-11-03 18:09
218 查看
Objective-C 支持全局变量
主要有两种实现方式:
(1)第一种和C/C++中的一样, 使用"extern"关键词;
(2)另外一种就是使用单例实现。
(比如我们经常会把一个变量放在AppDelegate里面作为全局变量来访问, 其中AppDelegate就是一个单例类)
在Objective-C中如何实现像C++中那样的静态成员变量呢?
你需要做的是在一个类A的implementation(.m或者.mm)文件中定义一个static变量,然后为A类定义静态成员函数(class method,也就是类方法)来操作该变量。
这样在其它类中你就不需要创建A类的实例来对static变量进行访问。虽然该static变量并不是A类的静态成员变量,但是也算达到了同样的效果。static变量的作用域被限制在单一的文件中。代码可以如下所示:
上面的例子中你就可以通过[Example instanceCount]对静态变量count进行访问,无须创建实例。
MyClass.h
警告: static 写在interface外面编译是没有错误的,但是编译器会报警告,这么说这样的写法是不被编辑器认可的。
错误:static 写在interface里面会直接报错,显然这样的语法是不被认可的。
+(void) addCount; 各位朋友们注意一下这法方法前面的+号。 它的意思是标致这个方法为静态方法,标志+号后不用创建这个对象通过类名可以直接调用这个静态方法。 而之前方法前用过的-号,标志-号后的方法必须通过本类的对象或者在本来中才可以使用。
MyClass.m
static关键字声明的变量必须放在implementation外面,或者方法中,如果不为它赋值默认为0,
它只在程序开机初始化一次。
+(void)addCount 因为标识了+号,所以这个方法无需使用这个类的对象调用。
直接使用类名方可调用这个方法。
#import "MyClass.h"
static int sCount = 100;
@implementation MyClass
+(void)addCount
{
sCount ++;
NSLog(@"静态整型变量的值为:%d", sCount);
}
@end
http://www.cocoachina.com/bbs/simple/?t60419.html
主要有两种实现方式:
(1)第一种和C/C++中的一样, 使用"extern"关键词;
(2)另外一种就是使用单例实现。
(比如我们经常会把一个变量放在AppDelegate里面作为全局变量来访问, 其中AppDelegate就是一个单例类)
在Objective-C中如何实现像C++中那样的静态成员变量呢?
你需要做的是在一个类A的implementation(.m或者.mm)文件中定义一个static变量,然后为A类定义静态成员函数(class method,也就是类方法)来操作该变量。
这样在其它类中你就不需要创建A类的实例来对static变量进行访问。虽然该static变量并不是A类的静态成员变量,但是也算达到了同样的效果。static变量的作用域被限制在单一的文件中。代码可以如下所示:
//example.h @interface Example : NSObject { } - (id)init; +(int)instanceCount; @end
//example.m #import "example.h" static int count; @implementation Example -(id)init{ self = [super init]; if(nil!=self){ count+=1; } return self; } +(int)instanceCount{ return count; } @end
上面的例子中你就可以通过[Example instanceCount]对静态变量count进行访问,无须创建实例。
MyClass.h
警告: static 写在interface外面编译是没有错误的,但是编译器会报警告,这么说这样的写法是不被编辑器认可的。
错误:static 写在interface里面会直接报错,显然这样的语法是不被认可的。
+(void) addCount; 各位朋友们注意一下这法方法前面的+号。 它的意思是标致这个方法为静态方法,标志+号后不用创建这个对象通过类名可以直接调用这个静态方法。 而之前方法前用过的-号,标志-号后的方法必须通过本类的对象或者在本来中才可以使用。
#import <Foundation/Foundation.h> //警告 //static int sCount ; @interface MyClass : NSObject //static int sCount; } +(void) addCount; @end
MyClass.m
static关键字声明的变量必须放在implementation外面,或者方法中,如果不为它赋值默认为0,
它只在程序开机初始化一次。
+(void)addCount 因为标识了+号,所以这个方法无需使用这个类的对象调用。
直接使用类名方可调用这个方法。
#import "MyClass.h"
static int sCount = 100;
@implementation MyClass
+(void)addCount
{
sCount ++;
NSLog(@"静态整型变量的值为:%d", sCount);
}
@end
http://www.cocoachina.com/bbs/simple/?t60419.html
相关文章推荐
- 转载 IOS开发之---static变量
- IOS开发之---static变量
- IOS开发之---static变量
- iOS开发——加载、滑动翻阅大量图片解决方案详解
- iOS开发拓展篇-XMPP简单介绍
- iOS开发 - 使用相册、照相机和录像
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- iOS开发实战:如何将非ARC的项目转换成ARC项目
- iOS 开发设置空间旋转中心点的代码
- iphone实现下拉列表(iOS开发 )
- IOS开发中的CGFloat、CGPoint、CGSize和CGRect
- IOS平台下的音视频即时通讯开发之调用API
- iOS开发笔记--自定义Zbar扫描界面
- ios实例开发精品文章推荐(8.12)11个处理触摸事件和多点触摸的JS库
- ios 开发 ---动画
- iOS开发网络篇—HTTP协议
- iOS 开发 自定义Tabbar
- iOS开发中善用日志记录工具
- Android IOS WebRTC 音视频开发总结(七六)-- 探讨直播低延迟低流量的粉丝连麦技术
- iOS开发学习专题-基础知识(五) NSDate时间 NSUserDefaults本地存储 NSNotification系统通知的详细使用方式