Objective-C - 使用另一个方法的CGPoint定位对象

时间:2013-05-15 06:59:54

标签: objective-c

你好,我有一个问题。我希望有人可以帮助我。我不明白......我有一个方法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];
}

4 个答案:

答案 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;