我是学习“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 中,这不会在程序一开始就被调用。