#objective-c #xcode4.2
#objective-c #xcode4.2
Вопрос:
Я только начинаю изучать программирование на Objective-C. Я разрабатываю Xcode 4.2 на Mac OS X версии 10.7.2 на iMac. Я читаю книгу Стивена Кочана «Программирование на Objective-C», в которой содержится простой пример «Hello World»:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog (@"Hello, World!");
[pool drain];
return 0;
}
При компиляции он выдает множество ошибок:
/ Разработчик/SDKs/MacOSX10.7.sdk/Система / Библиотека/ Фреймворки/ Фонд.framework /Headers/NSObjCRuntime.h:313:19: ошибка: неизвестное имя типа ‘NSString’ [1]
Есть еще много подобных. Есть ли что-то, что необходимо сделать перед компиляцией в первый раз? Какие-то настройки в Xcode?
Комментарии:
1. Для тех из нас, у кого нет этой книги, возможно, вы захотите описать шаги, которые вы предприняли в этом примере. Вы создали новый проект командной строки? Называется ли этот файл main.m? Вы не забыли отменить автоматический подсчет ссылок?
Ответ №1:
Unknown typename NSString
означает, что вы передаете код objective c (обычному) компилятору c
Комментарии:
1. Я создал это как проект командной строки… и он называется main.m
2. Обнаружена проблема … при создании проекта я оставил «тип» просто как «c». Я изменил его на «Foundation», и это сработало. Это привело ко всем нужным заголовочным файлам для Objective-C, прежде чем он просто пытался скомпилироваться на обычный старый c .
Ответ №2:
Судя по вашему коду, вы выбрали неправильный проект приложения для начала. Похоже, вы выбираете что-то, что связано с программой на c
Я предлагаю вам нажать Файл -> новый проект и выбрать приложение Cocoa для начала.
Затем вы копируете свой код и помещаете его в метод ‘didFinishLaunchingWithOptions’ в вашем файле appdelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog (@"Hello, World!");
[pool drain];
return YES;
}
Соберите и запустите программу. Вы должны иметь возможность видеть свой Hello World в журнале консоли..
Комментарии:
1. Нет, вы можете написать инструмент командной строки в Objective-C. Шаблон приложения Cocoa используется для создания приложения с графическим интерфейсом.
2. Да, вы можете.. И это не инструмент командной строки.. Вы определенно можете увидеть результат в журнале консоли
3. Я не уверен, что ты имеешь в виду. hchattaway пытается написать программу командной строки; ваше предложение использовать шаблон приложения Cocoa заставило бы его написать программу с графическим интерфейсом вместо этого.
4. Потому что это похоже на код для программы командной строки; а именно, он ссылается на Foundation, а не Cocoa, полностью написан в
main
функции, выводится на консоль и никогда не вызываетсяNSApplicationMain
.5. Чем это не похоже на программу командной строки? (Он даже ничего не импортирует из Cocoa, так что, скорее всего, это не программа с графическим интерфейсом.)
Ответ №3:
У меня тоже была эта проблема. Я обнаружил, что после того, как я выбрал «Командная строка», я выбрал «Core foundation», а не «Foundation» в окне, где я написал название проекта. Это было причиной ошибки для меня. Будьте осторожны!