问题描述
- 在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