XCode Throwing Errors @implementation - PullRequest
       1

XCode Throwing Errors @implementation

0 голосов
/ 03 августа 2011

Я пытаюсь изучить некоторые основы разработки приложений для OS X с использованием XCode и Objective-C, но у меня уже возникают проблемы.

У меня есть проект, который я недавно сделал и которыйу меня получилось очень хорошо, однако, когда я пытаюсь воспроизвести результаты, которые были у меня в прошлый раз, я сталкиваюсь с многочисленными ошибками.

У меня есть два файла: .c и .h с именем "AppDelegate"

в AppDelegate.h:

    #import <Cocoa/Cocoa.h>
    #import <WebKit/WebView.h>

    @interface AppDelegate : NSObject {
        IBOutlet WebView *gameFrame;
    }

    @end

, затем в AppDelegate.c:

    #import "AppDelegate.h"

    @implementation AppDelegate
    -(void)awakeFromNib
    {

    }
    @end

В IB существует объект NSObject с именем «AppDelegate», и его класс - «AppDelegate '.

Однако, когда я пытаюсь запустить это, я получаю 11734 ошибки ...

Когда я нажимаю на значок ошибки в нижней части XCodeокно, он перечисляет кучу кода, который, кажется, включает в себя NSStrings, но я не могу понять это ...

Кроме того, в моем коде строка

    @end

ви .c, и .h подсвечиваются с ошибкой:

'Expected identifier or '(' before '@' token.'

Я не понимаю, что XCode срабатывает на whКогда он пытается скомпилироваться, я не вижу логического места для '(') и не думаю, что оставил что-либо неопознанным.

Любая помощь будет признательна.

1 Ответ

3 голосов
/ 03 августа 2011

Это потому, что это недопустимый код C.

Вы назвали файл вашего модуля AppDelegate.c, что означает, что он содержит исходный код, написанный на (более или менее) чистом C. Но это не так:Вы написали интерфейс класса и реализацию в Objective-C, который является надмножеством C (все C являются допустимыми Objective-C, но не все Objective-C являются допустимыми C - в частности, классы - нет).

Для этого вы должны назвать файл модуля AppDelegate.m (или что-то еще, если он заканчивается на .m; присвоение ему имени после того, как класс стоит соблюдать).Суффикс .m указывает на модуль (обычно содержащий реализацию класса), написанный на Objective-C.

Итак, просто переименуйте файл модуля с AppDelegate.c на AppDelegate.m.Убедитесь, что вы делаете это в Xcode, а не в Finder: если вы делаете это в Finder, Xcode будет заботиться только о том, чтобы больше не было файла с именем AppDelegate.c;он не заметит переименования.

Для вашего удобства при создании будущих классов Xcode предоставляет шаблон на панели «Новый файл» для создания подклассов определенных классов Какао;ваш AppDelegate должен быть подклассом NSObject, и шаблоны также предоставляются для NSView, NSDocument, UIView, UIViewController и некоторых других.Файлы, созданные шаблоном, уже будут иметь правильные расширения.

...