Por que é Xcode dando-me esses erros?
-
21-08-2019 - |
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
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.