iOS 和 Android,一对天生的欢喜冤家,虽然系统和API完全不同,但可以找到很多功能相通的地方,如Android的关键字final 与 iOS的const。相信接触过java都知道如何使用static关键字,比起动不动就new一个对象来说,静态变量/方法在某些地方的使用更具备优势。iOS 与 Android 的static用法是一样的吗?答案当然是否,两者虽然长相一致,但用法却不尽相同,感兴趣的朋友可以参考这篇文章。

     那么Android static对应着iOS哪个关键字呢?答案就是:extern。下面就让我们来看看extern的用法。题外话:实现类变量的方法还有很多,如利用AppDelegate、自定义单例、NSUserDefault,但个人觉得还是不够简单。直接上代码: 


1、新建一个空白工程,只修改ViewController.m文件(用于定义类变量)和AppDelegate.m文件(用于使用类变量),其他文件不动。

经过测试,可以在多处地方定义类变量,请参考上图注释。


2、接下来,使用extern关键字表示引入全局变量,自动匹配工程,找到与当前(extern + 类型 + 变量名) 匹配的 (类型 + 变量名),接下来就可以对这个全局变量进行取值赋值操作了。



下面来看一段代码:

//  //  NSSingletonFactory.h  //  单例模式的简单使用  //  //  Created by apple on 15/9/28.  //  Copyright (c) 2015年 LiuXun. All rights reserved.  //  // 单例工厂类  #import   #define SingleFactory [NSSingletonFactory shareFactory]    #ifdef __cplusplus  extern "C"{  #endif      id SingleForClass(Class a);  // 已在.m 中添加函数的函数声明  #ifdef _cplusplus  }  #endif    @interface NSSingletonFactory : NSObject   {      NSMutableDictionary *data;  }    +(NSSingletonFactory *) shareFactory;  -(id)shareInstanceFor:(Class) aclass;  -(id) shareInstanceFor:(Class)aclass category:(NSString *)key;    @end  

可以发现有这么一句: extern "C"

如: extern "C" void fun(int a, int b);是为了告诉编译器:以C语言的方式编译和连接封装函数,而不是C++的。因为C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%$也可能是别的,这要看编译器的"脾气"了(不同的编译器采用的方法不一样),为什么这么做呢,因为C++支持函数的重载。


部分参考:http://blog.csdn.net/u013074465/article/details/42738553

更多相关文章

  1. Android(安卓)多线程 \Looper 分享
  2. 五步搞定Android开发环境部署——非常详细的Android开发环境搭建
  3. Android中本地广播的实现
  4. Android(安卓)TTS学习――TTS初体验(下)
  5. android.database.sqlite.SQLiteConstraintException: error cod
  6. C语言的函数递归(下)
  7. ANDROID JNI的使用简介
  8. Android通信机制之Android架构(一)
  9. Android(安卓)学习笔记 Service (二) Remote Service Sample

随机推荐

  1. android生态之应用篇
  2. Handler消息传送机制总结
  3. Android下如何调试程序
  4. 调用Android自带日历功能(日历列表单、添
  5. 如何把批量数据导入到android 的 sqlite
  6. 【Android】Android事件分发机制的学习笔
  7. 一、基础配置
  8. Android自学笔记-4-简单电话拨号器
  9. 一个非常好用的自定义圆形控件
  10. Android 进阶学习思维大纲