У меня проблема с использованием NSSize - PullRequest
1 голос
/ 31 июля 2010

Я выполняю упражнения по вызову в книге Аарона Хиллегаса «Программирование какао для 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

Ответы [ 2 ]

1 голос
/ 31 июля 2010

Давайте подумаем о том, что вы хотите, чтобы mySize был.

  • Вы хотите, чтобы его ширина была такой же, как frameSize.width
  • Вы хотите, чтобы его высота была frameSize.width * 2.

Теперь давайте посмотрим, что вы делаете с x:

  • Вы устанавливаете mySize.width равным ему
  • Вы установили mySize.height равным x * 2

Из этого можно сделать вывод:

Вы хотите установить x на frameSize.width.

В качестве альтернативы весь метод может быть просто return NSMakeSize(frameSize.width, frameSize.width * 2).

0 голосов
/ 31 июля 2010

Вам следует присвоить начальное значение x:

int x = 100;

В противном случае, результат не определен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...