你好,我有一个问题。我希望有人可以帮助我。我不明白......我有一个方法returnPointFromArray,其中我有一个带有值的数组(例如50.0,100.0)。比我想随机它然后我想使用方法drawObjectWithPoint中的CGPoint p来定位具有随机值的我的Object(来自另一个类的对象)。
但是drawObjectWithPoint方法总是说CGPoint p是0.0,0,0或他说“使用未声明的标识符p
或”实例变量隐藏......“。
我尝试使用相同的原则来测试int,这很有效。
我不知道我做错了什么。
如果有人能帮助我并解释我做错了什么,那就太好了。
非常感谢。
.h
-(void)returnPointFromArray;
-(void)drawObjectWithPoint;
.m
-(void)returnPointFromArray
{
NSArray *points = [];
//Random for points
NSUInteger *randomIndex = arc4random() % [points count];
NSValue *val = [points objectAtIndex:randomIndex];
CGPoint p = [val CGPointValue];
}
-(void)drawObjectWithPoint
{
Object *myObject [[Object alloc]init];
CGPoint pNew = p;
myObject.position =
[self addChild:myObject];
}
答案 0 :(得分:1)
你可以这样做:编辑 :(这是在.h文件中声明的方式)
.h文件中的
#import <UIKit/UIKit.h>
@interface MyClass : UIViewController {
CGPoint p;
}
-(void)returnPointFromArray;
-(void)drawObjectWithPoint;
@end
.m文件中的
-(void)returnPointFromArray {
NSArray *points = [];
//Random for points
NSUInteger *randomIndex = arc4random() % [points count];
NSValue *val = [points objectAtIndex:randomIndex];
p = [val CGPointValue]; // change here
}
-(void)drawObjectWithPoint {
Object *myObject [[Object alloc]init];
CGPoint pNew = p;
myObject.position =
[self addChild:myObject];
}
答案 1 :(得分:1)
通过方法调用直接指定值
-(void)drawObjectWithPoint
{
Object *myObject [[Object alloc]init];
myObject.position = [self returnPointFromArray];
[self addChild:myObject];
}
-(CGPoint)returnPointFromArray {
NSArray *points = [];
//Random for points
NSUInteger *randomIndex = arc4random() % [points count];
NSValue *val = [points objectAtIndex:randomIndex];
return [val CGPointValue];
}
答案 2 :(得分:0)
在.h文件中声明CGPoint p;
。您将其声明为本地(returnPointFromArray
函数)表示其范围仅适用于该函数。检查here
供参考。
答案 3 :(得分:0)
您的returnPointFromArray方法返回void - 只需修改它 -
-(CGPoint)returnPointFromArray
{
// your code
return p;
}
然后你要使用p,只需写
CGPoint pNew = [self returnPointFromArray];
显然你必须添加实际使用此值的代码 - 你的代码根本不会这样做 -
myObject.position = pNew;