我正在Aaron Hillegass的书“Cocoa Programming for Mac”中进行挑战练习。 我要做的是将窗口调整为宽度高度的两倍。到目前为止,这是我的代码。
#import "AppController.h"
@implementation AppController
-(id) init
{
[super init];
NSLog(@"init");
[window setDelegate:self];
return self;
}
-(NSSize) windowWillResize:(NSWindow*) sender
toSize:(NSSize)frameSize
{
int x;
NSSize mySize;
mySize.width = x;
mySize.height = 2*x;
NSLog(@"mySize is %f wide and %f tall",mySize.width,mySize.height);
return mySize;
}
这不能按预期工作我确定我没有正确使用NSSize类型。我不知道很多C,所以使用结构是我认为我犯了错误。
ADDENDUM:我将上面的代码更改为以下内容。我知道我正在传递一个NSSize,因此没有理由创建另一个(即mySize)。但是,我不明白为什么这样做。有人可以解释一下。
#import "AppController.h"
@implementation AppController
-(id) init
{
[super init];
NSLog(@"init");
[window setDelegate:self];
return self;
}
-(NSSize) windowWillResize:(NSWindow*) sender
toSize:(NSSize)frameSize
{
//float x = 100;
//NSSize mySize;
//mySize.width = x;
//mySize.height = x * 2;
//NSLog(@"mySize is %f wide and %f tall",mySize.width,mySize.height);
NSLog(@"mySize is %f wide and %f tall",frameSize.width,frameSize.height);
return NSMakeSize(frameSize.width, frameSize.width * 2);
}
@end
答案 0 :(得分:1)
让我们考虑一下你想要mySize的内容。
frameSize.width
frameSize.width * 2
。现在让我们看看你对x
所做的事情:
mySize.width
设为等于mySize.height
设为x * 2
由此我们可以得出结论:
您想将x
设置为frameSize.width
。
或者,整个方法可以是return NSMakeSize(frameSize.width, frameSize.width * 2)
。
答案 1 :(得分:0)
您应该为x
分配初始值:
int x = 100;
否则,结果未定义。