Pergunta

O erro que eu vejo é Xcode dizendo 3 coisas são-un declarado (ver figura abaixo) alt texto http://snapplr.com/snap/ks4h

Mas no cabeçalho do arquivo I declararam-los (ver imagem abaixo)

texto alt http://snapplr.com/snap/htmb

Por que eu estou recebendo esses erros quando eu declararam eles.

O Código completa:

arquivo de cabeçalho.

#import <Foundation/Foundation.h>


@interface HotKeyController : NSObject {
    IBOutlet NSButton *cmdHK;
    IBOutlet NSButton *ctrHK;
    IBOutlet NSButton *optHK;
    IBOutlet NSPopUpButton *keyHK;
    IBOutlet NSWindow *window;
    IBOutlet NSWindow *searchWindow;
    IBOutlet NSWindow *entryWindow;
}

@end

Implementação Arquivo

#import "HotKeyController.h"
#include <Carbon/Carbon.h>

@implementation HotKeyController

OSStatus MyHotKeyHandler(EventHandlerCallRef nextHandler,EventRef theEvent,void *userData)
{
    EventHotKeyID hkCom;
    GetEventParameter(theEvent,kEventParamDirectObject,typeEventHotKeyID,NULL,sizeof(hkCom),NULL,&hkCom);
    int l = hkCom.id;

    switch (l) {
        case 1: [window makeKeyAndOrderFront:NSApp];  
            break;
        case 2: [searchWindow makeKeyAndOrderFront:nil];
            break;
        case 3: [entryWindow makeKeyAndOrderFront:nil];
            break;  
    }
    return noErr;
}

- (void)awakeFromNib
{
    //Register the Hotkeys
    EventHotKeyRef gMyHotKeyRef;
    EventHotKeyID gMyHotKeyID;
    EventTypeSpec eventType;
    eventType.eventClass=kEventClassKeyboard;
    eventType.eventKind=kEventHotKeyPressed;


    InstallApplicationEventHandler(&MyHotKeyHandler,1,&eventType,pl,NULL);

    gMyHotKeyID.signature='htk1';
    gMyHotKeyID.id=1;
    if([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyShowMain"]!=-999) {
        RegisterEventHotKey([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyShowMain"], [[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyShowMainModifier"], gMyHotKeyID, GetApplicationEventTarget(), 0, &gMyHotKeyRef);
    }

    gMyHotKeyID.signature='htk2';
    gMyHotKeyID.id=2;
    if([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyShowSearch"]!=-999) {
        RegisterEventHotKey([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyShowSearch"], [[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyShowSearchModifier"], gMyHotKeyID, GetApplicationEventTarget(), 0, &gMyHotKeyRef);
    }

    gMyHotKeyID.signature='htk3';
    gMyHotKeyID.id=3;
    if([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyShowEntry"]!=-999) {
        RegisterEventHotKey([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyShowEntry"], [[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyShowEntryModifiers"], gMyHotKeyID, GetApplicationEventTarget(), 0, &gMyHotKeyRef);
    }

}

@end
Foi útil?

Solução

Você teria que mostrar mais do arquivo para ter certeza. Você está importando corretamente o arquivo de cabeçalho? Você salvou o arquivo de cabeçalho?

Tente inserir as auto explícitas> referências e você pode obter uma mensagem de erro mais revelador.

Além disso, tente pré-processamento do arquivo de implementação (no menu Build) e que pode revelar por que o ivar não está sendo encontrado.

Outras dicas

O erro que eu vejo é Xcode dizendo 3 coisas são declarou-un ...

Mas no cabeçalho do arquivo I declararam-los ...

Por que eu estou recebendo esses erros quando eu declarei-los [na classe HotKeyController].

Porque essas linhas estão em uma função, não num modo da classe HotKeyController. Não importa onde você coloca a função (@implementation dentro ou não); ainda é uma função, não um método.

Como eu iria fazer o ponto parâmetro userData ao meu HotKeyController?

Você define que quando você cria o manipulador de eventos. Na verdade, você já está definindo-o como “pl”, seja o que for.

NSWindow não é definido no âmbito da Fundação, você deve importar os cabeçalhos corretos, ApplicationKit ou de cacau.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top