如何从另一个类访问变量?

时间:2014-08-17 12:10:27

标签: ios xcode

如何从另一个类(ViewController)访问变量'pew'?

// ImageTouched.h

#import <UIKit/UIKit.h>

@interface ImageTouched : UIImageView    
@property (nonatomic, strong) NSString *pew;    
@end

// ImageTouched.m

#import "ImageTouched.h"

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    NSLog(@"Image Touched");
    self.pew = @"pewpewpewew";  
}

// myViewController.m

#import "ImageTouched.h"

- (void)viewDidLoad
{
    [super viewDidLoad];    
    ImageTouched *instance = [[ImageTouched alloc] init];        
    NSLog(@"Pew value is %@", instance.pew);

}

2 个答案:

答案 0 :(得分:0)

您可以在ImageTouched.h头文件中声明属性。您还可以在头文件中定义一个getter,基本上它的工作方式相同。当您在头文件中定义属性或方法时,它会被生成&#34; public&#34;并且可以被其他类访问。​​

在头文件中使用以下内容:

@property (nonatomic, strong) NSString *pew;

在ImageTouched.m的某处,您必须为pew分配一个值,例如:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{    
    NSLog(@"Image Touched");
    self.pew = @"pewpewpewew";
}

然后在视图控制器中创建一个实例:

ImageTouched *instance = [ImageTouched init] alloc];

那么你可以像这样访问这个属性: instance.pew

示例:

NSLog(@"Pew value is %@", instance.pew);

另一种选择是在头文件中使用getter方法。 在标题中,声明:

- (NSString *)pew;

在实现(.m)文件中:

- (NSString *)pew
{
   return self.pew;
}

答案 1 :(得分:0)

在初始化变量之前,您正在访问变量pewviewDidLoad方法是视图控制器获得焦点时调用的第一个方法之一。以下是名为

的方法的顺序
-(void)initWithCoder
-(void)awakefromNib    //(if story board is used)
    or
-(void)loadView----() //if manually generating the view contoller

-(void)viewDidLoad-----(called only once in the life cycle of viewController)
-(void)viewWillAppear
-(void)viewDidAppear

在视图完成加载后调用touchesBegan方法。正如我在edwardmp的评论中所说的那样。您需要首先初始化变量。您可以在ImageTouched类的构造函数中初始化它,也可以通过实现viewDidLoad调用之前的方法之一。