`
lizaochengwen
  • 浏览: 665496 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IOS开发之---static变量

 
阅读更多
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.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-block的局部变量和全局变量和static的静态变量联系.zip

    在iOS开发中,Block、局部变量、全局变量和静态变量(`static`)是编程中常见的概念,它们各自有自己的特点和用途,同时在特定情况下,它们之间也存在一定的联系。让我们详细探讨一下这些知识点。 首先,Block是...

    ffmpeg-20191025-155508c-win64-static.zip

    `appium` 支持多种第三方库和工具,以增强其功能,而 FFmpeg 就是其中之一,尤其是当涉及到多媒体元素的自动化测试时。 在Android开发中,FFmpeg 可能用于处理应用程序中的音视频资源,例如在后台播放音乐,或者对...

    iOS面试题-C部分

    ### iOS面试题-C部分知识点详解 #### 一、Static关键字的作用 1. **隐藏功能**:当我们在编译多个文件时,所有未加`static`前缀的全局变量和函数都具有全局可见性。添加`static`关键字后,变量或函数的作用域仅限于...

    设计模式ForiOS-02-单例模式.pdf

    单例模式是一种软件设计模式,它的核心思想是确保一个类在整个应用程序中只有一个实例,并提供一个全局访问点来获取这个实例。...理解单例模式的概念和正确使用方式,是每个iOS开发者必备的技能之一。

    iOS开发规范.pdf

    在iOS开发中,命名规范要求局部变量不应该包含下划线,且应尽量避免使用单个字符变量,以见名知义为原则;成员变量以空格键开头,并采用小驼峰命名法;常量使用static int const或static NSString *const声明,并...

    【无限互联】iOS开发视频教程课件第1、2章OC基础语法课件

    ### iOS开发之Objective-C基础语法知识点详解 #### 一、标示符 在Objective-C (以下简称OC) 语言中,标示符是用来标识各种变量、方法、类等元素的名称。标示符遵循一定的命名规则: - **组成**: 字母、下划线“_”...

    iOS开发系列--详细讲解C语言之存储方式和作用域

    在iOS开发中,理解C语言的基础概念至关重要,尤其是在涉及到变量的存储方式和作用域时。本文将深入探讨这些概念,帮助开发者更好地掌握C语言并应用于iOS项目。 首先,我们来看变量的作用范围。在C语言中,变量分为...

    IOS开发学习总结objectivec面向对象之——成员变量,模拟类变量,单例模式电脑资料.doc

    IOS 开发学习总结 Objective-C 面向对象之——成员变量、模拟类变量、单例模式 Objective-C 中的变量根据定义位置的不同,可以分为三大类:成员变量、局部变量和全局变量。成员变量是 Objective-C 中的实例变量,不...

    iOS开发编程规范.pdf

    在iOS开发中,遵循一套规范是非常重要的,因为它可以提高代码的可读性和团队协作效率。以下是一些关于iOS开发中的命名规范、宏和常量命名、枚举、Delegate使用以及方法设计的重要知识点: 1. **命名规范**: - ...

    小米2019秋招iOS开发笔试题.docx

    1. 静态变量(static)在不同实例中的地址是相同的,它们存储在全局区,选项C正确。这表明静态变量在程序生命周期内只会初始化一次。 2. 入栈序列ABCD EF,可能的出栈序列中,BCEAFD是不可能的,因为E在F之前入栈,...

    浅谈iOS开发中static变量的三大作用

    当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。 下面是a.c的内容 char a = 'A'; // global...

    ios开发ios基础开发面试题.txt

    它是苹果公司开发iOS和macOS应用的主要语言之一。 - **特点**: - 动态类型:变量可以在运行时绑定到任何类型的对象上。 - 消息传递:方法调用被视为向对象发送消息的过程。 - 类与对象:支持类继承以及多级继承...

    Java static修饰成员变量

    但当成员变量前加上`static`关键字,这个变量就称为静态变量,或者叫类变量。静态变量不会为每个对象实例创建副本,而是所有实例共享同一份存储空间。这意味着,无论创建多少个对象,静态变量都只有一个实例,所有...

    qt5.15.9-static 静态编译库,已经编译完毕,直接安装即可

    3. 设置环境变量,将`C:\Qt\Static\qt5.15.9\bin`添加到系统的PATH变量中,这样命令行可以找到Qt的可执行文件。 4. 使用Qt Creator或者命令行进行项目配置,选择静态链接的编译选项,指定对应的Qt版本路径。 一旦...

    ios-单利实现控制器之间的跳转.zip

    在iOS开发中,单例(Singleton)是一种设计模式,它保证了类只有一个实例,并提供一个全局访问点。在本案例中,“ios-单利实现控制器之间的跳转.zip”项目是关于如何利用单例模式来管理TabBarViewController并实现两...

    IOS应用源码Demo-单例模式-毕设学习.zip

    在iOS应用开发中,单例模式是一种常用的编程设计模式,它确保了类只有一个实例,并提供一个全局访问点。这个模式在iOS开发中的应用非常广泛,特别是在处理系统资源、网络请求、数据存储等需要全局共享的对象时。在...

    IOS开发之路--C语言存储方式和作用域

    在iOS开发中,掌握C语言的基础知识至关重要,尤其是在理解变量的存储方式和作用域方面。这些概念对于编写高效且无bug的代码起到了决定性的作用。本文将深入探讨C语言中的变量作用范围、存储方式、生命周期以及可访问...

    IOS VLC 编译详解

    2. **开发工具**: Xcode 4.3或更高版本,确保已安装了iOS SDK。 3. **VLC源代码**: 下载VLC iOS版的源代码,可以从官方网站获取: - [VLC for iOS](http://www.videolan.org/vlc/download-ios.html) - VLC 1.1.0 ...

    ios 面试题目及答案

    标题 "iOS 面试题目及答案" 指出了文件内容主要围绕iOS开发相关的面试题目和答案展开,覆盖了iOS开发中的一些核心概念和技术点。描述部分说明这些面试题目非常全面,涉及了Objective-C、Cocoa Touch以及Xcode的使用...

Global site tag (gtag.js) - Google Analytics