0

我是学习“iPad 和 iPhone 应用程序开发”课程的新手。在第 5 讲的演示中,我们有一些这样的代码

#import "HappinessViewController.h"
#import "FaceView.h"

@interface HappinessViewController ()
@property (nonatomic, weak) IBOutlet FaceView *faceView;
@end

@implementation HappinessViewController

@synthesize happiness = _happiness;
@synthesize faceView = _faceView;


-(void) setHappiness:(int)happiness
{
    _happiness = happiness;
    [self.faceView setNeedsDisplay];
}


-(void)setFaceView:(FaceView *)faceView
{
    _faceView = faceView;
    NSLog(@"set FaceView invoked");
    [self.faceView addGestureRecognizer:[[UIPinchGestureRecognizer alloc]        
 initWithTarget:self.faceView action:@selector(pinch:)]];
}

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return YES;
}

@end

在方法“-(void)setFaceView:(FaceView *)faceView”中,我想知道它可能类似于 javascript 中的事件侦听器。但我也想知道事件监听器何时被绑定。所以我添加了“NSLog(@"set FaceView invoked");"。事实证明,一旦我运行这个程序,就会调用这个 setter 函数,这让我非常困惑。所以我想知道一开始是如何调用“setFaceView”的?

顺便说一句,FaceView 是 UIView 的子类,而 faceView 是 FaceView 类的唯一实例。而且我还尝试添加“NSLog(@“设置幸福调用”);” 在方法 setHappiness 中,这不会在程序一开始就被调用。

4

1 回答 1

1
于 2013-06-10T21:53:27.030 回答