Iphone 从IBAction方法获取变量或对象

Iphone 从IBAction方法获取变量或对象,iphone,ios,xcode,ipad,ios6,Iphone,Ios,Xcode,Ipad,Ios6,在过去的几天里,我一直在阅读、谷歌搜索和观看林达的视频,以找到这个问题的答案。我还没有找到一个好答案 这看起来应该很简单。使用常规方法,我可以传递变量。但是由于iAction是(void),我不知道如何将变量转换到另一个方法 以下是一些我想做的简单示例: - (IBAction)treeButton:(id)sender { int test = 10; } -(void)myMethod{ NSLog(@"the value of test is %i",test); }

在过去的几天里,我一直在阅读、谷歌搜索和观看林达的视频,以找到这个问题的答案。我还没有找到一个好答案

这看起来应该很简单。使用常规方法,我可以传递变量。但是由于iAction是(void),我不知道如何将变量转换到另一个方法

以下是一些我想做的简单示例:

- (IBAction)treeButton:(id)sender {
    int test = 10;
}


-(void)myMethod{
     NSLog(@"the value of test is %i",test);
}
这就是我真正想要的工作。我试图让一个按钮设置我要存储的初始位置,并在另一种方法中使用

- (IBAction)locationButton:(id)sender {
    CLLocation *loc1 = [[CLLocation alloc]
       initWithLatitude:_locationManager.location.coordinate.latitude
       longitude:_locationManager.location.coordinate.longitude];
}


-(void)myMethod{
     NSLog(@"the value of test is %i",test);
     NSLog(@"location 1 is %@",loc1);
}

任何能引导我走向正确方向的建议都会很好。我已经阅读并观看了关于变量范围、实例变量等的视频。只是不理解我在这里需要做什么

更改
myMethod
以接受您需要的参数:

- (void)myMethod:(CLLocation *)location {
    NSLog(@"location 1 is %@", location);
}
这样调用它:

- (IBAction)locationButton:(id)sender {
    CLLocation *loc1 = [[CLLocation alloc]
       initWithLatitude:_locationManager.location.coordinate.latitude
       longitude:_locationManager.location.coordinate.longitude];
    [self myMethod:loc1];
}

如果需要通过多个方法或在代码中的不同点访问它,我建议在
@interface
声明中为
loc1
创建一个实例变量

@interface MyClass : NSObject {
    CLLocation *loc1;
}
在您的方法中,您只需设置它,而不是重新声明它:

loc1 = [[CLLocation alloc]
       initWithLatitude:_locationManager.location.coordinate.latitude
       longitude:_locationManager.location.coordinate.longitude];
myMethod
中,只需访问它:

- (void)myMethod{
    NSLog(@"location 1 is %@", loc1);
}

也许重新观看一个实例变量视频?loc1需要是一个实例变量,目前它的作用域仅限于您的方法。在控制器中创建一个新的实例变量,即loc1,并在每次触发某个iAction并从其他方法使用它时为其赋值。就这么简单。谢谢你的帮助。esqew的回答告诉我,我正在重新定义方法中的实例变量。我想这很简单。谢谢你快速简洁的回答。我花了三天的时间试图弄明白这一点,然后在这里问了一个问题(学到了很多)。我没有意识到我在方法中重新声明了实例变量。现在完全有道理了。谢谢