Почему при создании нового файла класса Objective C в XCode4 не создается «класс Objective C с заголовком, который включает заголовок <Cocoa / Cocoa.h>». - PullRequest
0 голосов
/ 15 апреля 2011

Когда я создаю новый файл класса Objective C в XCode 4, он создает два файла:

тот, чье содержимое:

#import <Foundation/Foundation.h>


@interface MyClass : NSObject {
@private

}

@end

, и тот, чей контент:

#import "MyClass.h"


@implementation MyClass

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }

    return self;
}

- (void)dealloc
{
    [super dealloc];
}

@end

Я новичок, работающий над книгой чайников, и это не то, что я привык видеть в XCode3, когда создаю новый файл.Кроме того, мастер говорит, что файл должен иметь <Cocoa/Cocoa.h> в заголовке, но эти файлы имеют Foundation.h в заголовке.

Ответы [ 3 ]

1 голос
/ 16 апреля 2011

Вы читаете старую книгу.Если вы посмотрите Cocoa.h, он импортирует:

  • # import Foundation / Foundation.h
  • # import AppKit / AppKit.h
  • # import CoreData / CoreData.h

Это была стандартная практика для большинства приложений Какао в Mac OS X. Теперь у нас естьiOS не использует AppKit.framework;iOS использует UIKit.framework.Таким образом, шаблон будет импортировать только Foundation.h .Таким образом, вы можете использовать свой подкласс в проекте, ориентированном на платформу Mac OS X или iOS.Таким образом, вам не нужно писать операторы #define для другой платформы.

Если вы посмотрите предварительно скомпилированный заголовок (.pch) для проекта Mac OS X, он импортирует Cocoa.hдля вас, которые импортируют AppKit.h .И проект iOS .pch импортирует UIKit.h .

1 голос
/ 16 апреля 2011

К

  • Просмотр шаблонов Xcode /Developer/Library/Xcode/Templates/File Templates
  • Особенно в шаблонах Какао в папке Cocoa/

Я вижу, что:

  • NSDocument, NSView, NSViewController, NSWindowController импортируются шаблоны Cocoa.h
  • NSObject он же волшебный ___VARIABLE_cocoaSubclass___ в шаблоне - единственный импортирующий Foundation.h

Вот что вы видите в интерфейсе: Xcode create class

Так что объяснение простое, несмотря на описание шаблонов "Какао" , если вы используете класс Какао, как указано выше, Cocoa.h будет импортировано, в противном случае Foundation.h будет.

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

0 голосов
/ 16 апреля 2011

В вашем проекте есть файл MyProjectName-Prefix.pch . Это ваш файл Pre-Compiled-Header. Заголовки, перечисленные здесь, автоматически включаются в каждый второй заголовок вашего проекта более эффективным способом (бит «предварительно скомпилированный»). Если вы откроете его, вы увидите #import <Cocoa/Cocoa.h>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...