博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转载 IOS开发之---static变量
阅读量:7033 次
发布时间:2019-06-28

本文共 1482 字,大约阅读时间需要 4 分钟。

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变量的作用域被限制在单一的文件中。代码可以如下所示:

[cpp]
  1. //example.h      
  2. @interface Example : NSObject {     
  3.      
  4. }   
  5. - (id)init;      
  6. +(int)instanceCount;          
  7. @end    
[cpp]
  1. //example.m      
  2.  #import "example.h"           
  3. static int count;          
  4. @implementation Example      
  5. -(id)init{      
  6.     self = [super init];      
  7.     if(nil!=self){      
  8.         count+=1;      
  9.     }      
  10.  return self;      
  11. }          
  12. +(int)instanceCount{      
  13.      return count;     
  14. }          
  15. @end    

上面的例子中你就可以通过[Example instanceCount]对静态变量count进行访问,无须创建实例。

MyClass.h

警告:  static 写在interface外面编译是没有错误的,但是编译器会报警告,这么说这样的写法是不被编辑器认可的。
错误:static 写在interface里面会直接报错,显然这样的语法是不被认可的。

+(void) addCount;  各位朋友们注意一下这法方法前面的+号。 它的意思是标致这个方法为静态方法,标志+号后不用创建这个对象通过类名可以直接调用这个静态方法。 而之前方法前用过的-号,标志-号后的方法必须通过本类的对象或者在本来中才可以使用。

[cpp]
  1. #import <Foundation/Foundation.h>  
  2. //警告  
  3. //static int sCount ;   
  4.  @interface MyClass : NSObject  
  5. //static int sCount;  
  6. }    
  7. +(void) addCount;    
  8. @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

转载于:https://www.cnblogs.com/codeforcode/p/3768896.html

你可能感兴趣的文章
Linux 内核调优
查看>>
Logrotate 管理 Nginx日志
查看>>
部署 清洗设备-防DDOS的部署 的经历
查看>>
我的友情链接
查看>>
HAproxy负载均衡
查看>>
数据库中常用的一些表
查看>>
菜鸟自学嵌入式之C语言基础No1
查看>>
海量路由表可以使用HASH表存储吗-HASH查找和TRIE树查找
查看>>
四年来一直不敢写技术博文
查看>>
usaco PROB Checker Challenge 搜索
查看>>
苹果 开发让我们体会到它的特色
查看>>
POJ 2376 Cleaning Shifts 贪心
查看>>
XP开启远程桌面服务的方法
查看>>
Linux基础知识题解答(四)
查看>>
MySQL PHP 语法
查看>>
我的友情链接
查看>>
DHCP服务器-零配置接入网络
查看>>
lamp 构建分离服务器模式
查看>>
制作U盘启动安装CentOS Linux系统
查看>>
22.windows常用的DOS命令
查看>>