ios-在objective-c中使用全局/静态变量

问题描述

在objective-c中使用全局/静态变量
保存用作方法的变量,然后在另一个方法中调用。
实现时会不会用到全局/外部/静态变量?如果需要应该怎么用?

我试过用全局和静态,但是都失败了。

代码中用来保存newX 和 newY 的信息。

-(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{...    int newX = (int)(Button.center.x + valueX);    int newY = (int)(Button.center.y + valueY);...}

然后在这里调用:

-(IBAction)clicked:(id)sender{    randX = arc4random() % 320;    randY = arc4random() % 548;    CGPoint randNewPlace = CGPointMake(randX randY);    Rand.center = randNewPlace;    if (newX == randX || newY  == randY)    {        [Rand sendActionsForControlEvents:UIControlEventTouchUpInside];    }}

解决方案

你是做Android转iOS的么?在Objc中没有Java里全局变量的这个概念,只能够通过单例实现类似的效果。
创建一个GloubVariables对象保存需要保存的内容:

//////////////////////////////////////////////////////////////////////////GloubVariables.h@interface GloubVariables : NSObject{    int newX;    int newY;}@property(assinnonatomic) int newX;@property(assinnonatomic) int newY;+(GloubVariables *)sharedInstance;@end//////////////////////////////////////////////////////////////////////////GloubVariables.m#import ""GloubVariables.h""@implementation GloubVariables@synthesize newX;@synthesize newY;static GloubVariables *instance_;+(GloubVariables *)sharedInstance{    @synchronized(self)    {        if(instance_ == nil)        {            instance_ = [[GloubVariables alloc] init];        }    }    return instance_;}@end//////////////////////////////////////////////////////////////////////////

然后需要用到的地方:

[GloubVariables sharedInstance].newX[GloubVariables sharedInstance].newY

解决方案二:
这样
声明属性:

@property(nonatomicweak) int newX;@property(nonatomicweak) int newY;-(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{...    self.newX = (int)(Button.center.x + valueX);    self.newY = (int)(Button.center.y + valueY);...}-(IBAction)clicked:(id)sender{   randX = arc4random() % 320;   randY = arc4random() % 548;   CGPoint randNewPlace = CGPointMake(randX randY);   Rand.center = randNewPlace;   if (self.newX == randX || self.newY  == randY)   {      [Rand sendActionsForControlEvents:UIControlEventTouchUpInside];   }

}

时间: 2024-12-30 22:44:29

ios-在objective-c中使用全局/静态变量的相关文章

全局变量与全局静态变量的区别

全局变量与全局静态变量的区别: (a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别. (b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的. 静态全局变量的作用: (a)不必担心其它源文件使用相同变量名,彼此相互独立. (b)在某源文件中定义的静态全局变量不能被其他源文件使用或修改. 例如:一个程序由两个源文件组成,其中在一个源文件中定义了"int n;",在另一个源

php实现全局静态变量类的一种实现方式

变量|静态 下面是一个全局静态变量类,类里面的函数都是静态函数, 注意里面的符号"&",他用来进行地址引用的.如果对引用方式不熟悉,请先参考php手册中的相关的章节. 另外本例是仿照php的pear类库中,pear.php中的静态全局error的方法实现的. <?class StatVar{  function &setInit(){    static $static = '';    return $static;  }  function set($key,

php中静态类与静态变量用法的区别分析_php技巧

本文实例分析了php中静态类与静态变量用法的区别.分享给大家供大家参考.具体分析如下: static是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了. 1. 创建对象$object = new Class(),然后使用"->"调用:$object->attribute/function,前提是该变量/方法可访问. 2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态

C/C++中全局变量和静态变量的区别

1. 全局变量的作用域是整个项目,它只需要在一个源文件中定义就可以作用于所有的源文件,其它不包括全局变量定义的文件需要用extern关键字再次声明这个全局变量. 2. 全局变量.静态全局变量.静态局部变量都是在静态存储区(全局数据区)中分配空间的,而局部变量是在栈上分配空间的. 3. 全局变量.静态变量的生命期和程序生命期是一样的,在程序结束之后操作系统会回收空间. 4. 全局变量和静态变量都是保存在静态存储区中,生命期和程序一样,但是不同的是全局变量的作用域是整个项目,而静态全局变量是当前程序

php中静态类与静态变量用法的区别分析

 static是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了. 1. 创建对象$object = new Class(),然后使用"->"调用:$object->attribute/function,前提是该变量/方法可访问. 2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以,但是有前提条件. A. 如果是变量,需要该变量可访问. B. 如果是方法,除了

php中静态类与静态变量用法区别解析

 static是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了.   1. 创建对象$ob ject = new Class(),然后使用"->"调用:$ob ject->attribute/function,前提是该变量/方法可访问.   2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以,但是有前提条件. A. 如果是变量,需要该变量可访问. B. 如果

PHP static局部静态变量和全局静态变量总结

 使用静态局部变量的原因是它不能被外部使用,但是它的值依然在没此使用后保留.虽然使用全局变量可以实现相同的功能,但是它经常会造成意外 静态局部变量的特点:   1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它.倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值 2.静态局部变量只会初始化一次 3.静态属性只能被初始化为一个字符值或一个常量,不能使用表达式.即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变

PHP static局部静态变量和全局静态变量总结_php技巧

静态局部变量的特点: 1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它.倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值2.静态局部变量只会初始化一次3.静态属性只能被初始化为一个字符值或一个常量,不能使用表达式.即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量):静态变量的初始值为0.4.当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量.虽然用全局变量也可以达到上述目的

struts2 指向映射文件信息的全局静态变量是谁!

问题描述 已知一个路径:/userInfo/load根据这个路径在内存中定位它所对应的Action有没有类似WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext()).getBean("")这样的方式读取Action配置对象在线急求.....