0

私が得るエラーは、3つのことが宣言されていないというXcodeです(下の写真を参照)。 代替テキストhttp://snapplr.com/snap/ks4h

しかし、ヘッダーファイルで私はそれらを宣言しました(下の写真を参照)

代替テキストhttp://snapplr.com/snap/htmb

宣言したときにこれらのエラーが発生するのはなぜですか。

完全なコード:

ヘッダーファイル。

#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

実装ファイル

#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
4

3 に答える 3

6

私が得るエラーは、3つのことが宣言されていないというXcodeです…</ p>

しかし、ヘッダーファイルで私はそれらを宣言しました…</ p>

[HotKeyControllerクラスで]宣言したときにこれらのエラーが発生するのはなぜですか。

これらの行は、HotKeyControllerクラスのメソッドではなく、関数内にあるためです。関数をどこに置くかは関係ありません(内部@implementationかどうかは関係ありません)。それはまだ関数であり、メソッドではありません。

userDataHotKeyControllerをパラメーターが指すようにするにはどうすればよいですか?

これは、イベントハンドラーを作成するときに設定します。実際、それが何であれ、あなたはすでにそれを「<code>pl」に設定しています。

于 2009-07-02T07:06:14.690 に答える
4

確実にするために、ファイルをもっと表示する必要があります。ヘッダーファイルを正しくインポートしていますか?ヘッダーファイルを保存しましたか?

明示的な自己参照を挿入してみてください。そうすると、よりわかりやすいエラーメッセージが表示される場合があります。

また、([ビルド]メニューで)実装ファイルを前処理してみてください。そうすると、ivarが見つからない理由が明らかになる可能性があります。

于 2009-07-02T06:46:52.887 に答える
0

NSWindowはFoundationフレームワークで定義されていないため、適切なヘッダー、ApplicationKitまたはCocoaをインポートする必要があります。

于 2009-07-02T09:57:15.093 に答える