#objective-c #xcode4 #nslog #nsautoreleasepool
#objective-c #xcode4 #nslog #nsautoreleasepool
Вопрос:
Я изучаю objc и Xcode из удобной бесплатной электронной книги под названием «Как стать» и Xcoder, что довольно удобно. За исключением того, что он был написан в 2007 году с помощью Xcode 3, и все его образцы взяты из этой версии, к сожалению, у меня OSX Lion и, следовательно, Xcode 4. Итак, к сути моего вопроса. Они предоставляют примерный блок кода, как показано здесь:
//start
#import <Foundation/Foundation.h
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Hello, World!");
[pool drain];
return 0;
}
//end
Итак, мои проблемы в том, что я получаю более 20 ошибок, а Xcode не распознает команды NSAutoreleasePool или NSLog.
Кто-нибудь знает, почему это не сработает? Я уже добавил Foundation framework.
Я уже понял, что команда printf работает лучше, чем команда NSLog (которая, насколько мне известно, в большей степени используется для отчетов об ошибках), так что да, любая помощь была бы приятной.
Комментарии:
1. Вам не хватает окончания ‘>’ при импорте foundation, это также может быть причиной проблемы:
#import <Foundation/Foundation.h>
2. Вы также путаете IDE (Xcode) с API (Cocoa).
Ответ №1:
Если NSLog
не распознается, это не проблема, связанная с Xcode 3 и Xcode 4. Ваш код не включает в себя самый базовый код среды выполнения Objective-C. Я бы предположил, что он компилируется как C, а не Objective-C.
Вы говорите, что вам пришлось добавить Foundation framework — это указывает на то, что вы не запускали свой проект с использованием шаблона на основе Objective C. Когда вы выбираете Новый проект …, какой шаблон вы выбрали? Любой из шаблонов приложений iOS должен работать, и большинство шаблонов приложений Mac OS X должны работать. Если вы решили создать инструмент командной строки, вы должны выбрать Foundation в качестве типа.
Редактировать: Также я должен добавить, что синтаксис для пулов автоматического выпуска изменился в последней версии Xcode, поскольку ARC используется по умолчанию. Вы можете либо отключить ARC, либо прочитать об этом, чтобы увидеть, в чем различия. Скорее всего, с ARC вам будет проще, поскольку вам придется беспокоиться о меньшем управлении памятью, но вам придется иметь это в виду, если вы читаете книгу, в которой это не учитывается.
Комментарии:
1. Спасибо, я выбрал инструмент командной строки, но я не мог видеть, где выбрать foundation в качестве типа. Я пойду посмотрю еще раз. В моем руководстве, как я уже сказал, показано, как это сделать в Xcode 3, но когда я смотрю на меню выбора шаблона, оно совершенно другое. Спасибо за помощь, хотя я пойду исследовать ARC, хотя это звучит довольно полезно.
Ответ №2:
Основа расположена на экране, где вам нужно дать название вашему проекту. В качестве значения по умолчанию установлено значение C, в вашем случае вам нужно нажать на выпадающее меню и вместо этого выбрать Foundation.
Удачи.