Подтвердить что ты не робот

Класс Swift vs Cocoa Класс Touch в Xcode6

Я новичок в разработке iOS и начал напрямую с Swift.

Когда я хочу добавить новый файл в проект, среда IDE представляет мне два файла, которые, как представляется, используются взаимозаменяемо в обучающих программах, которые я видел до сих пор. Они "Cocoa Touch Class" и "Swift Class".

Когда я создаю новый класс Cocoa Touch, это то, что я получаю (в зависимости от унаследованного класса)

import UIKit

class CtTest: NSObject {

}

и когда я создаю новый файл Swift, я получаю следующее: -

import Foundation

Расширением для обоих этих классов является .swift

Если я добавлю определение класса в файл Swift и изменим его следующим образом: -

import UIKit
import Foundation

class SwTest:NSObject
{
}

существует ли разница между двумя файлами.

Если да, то какие классы предпочтительнее, в каких сценариях, например. Просмотр контроллеров, моделей и т.д.

Спасибо

4b9b3361

Ответ 1

По умолчанию не существует разницы между двумя разными шаблонами, кроме кода, который они помещают в файл. Как вы заметили, оба они имеют одинаковое расширение, и они оба являются текстовыми файлами - компилятор не относится к ним иначе.

Общее правило состоит в том, чтобы импортировать модуль только в том случае, если он вам нужен в этом файле - в основном, если вы получите ошибку компиляции в противном случае. Вы получите ошибку компилятора из-за отсутствия импорта, если попытаетесь использовать из них типы.

Фонд

Фонд - это, в основном, стандартная библиотека разработки Apple, реализованная в Objective-C. Он включает такие типы данных, как NSArray, NSString и NSDictionary. Однако Swift предоставляет замены для этих типов данных: Array, String и Dictionary. Вам нужно только import Foundation в файлах, которые пытаются взаимодействовать с API-интерфейсом Objective-C. Однако, поскольку все существующие API написаны в Objective-C (так как Swift является настолько новым), вам придется импортировать Foundation почти во все файлы, кроме базовых объектов домена.

UIKit

UIKit фактически включает Foundation. Если вы импортируете UIKit, вам не нужно также импортировать Foundation. UIKit - это набор стандартных API, специфичных для интерфейса iOS. Он включает в себя такие виды, как UITableView и контроллеры, такие как UIViewController. Вам нужно будет это делать при работе с пользовательским интерфейсом iOS-приложений.

Cocoa Класс касания

Этот шаблон полезен для классов подкласса из UIKit и потенциально имеет Xcode для создания файлов построителя интерфейса для вас. Если вам не нужна ни одна из этих вещей, вы должны просто использовать шаблон Swift Class. Только ваш объект наследуется от NSObject, если вам действительно нужно (если вам нужно использовать свой класс Swift от Objective-C). Если вы не наследуете NSObject, есть дополнительные оптимизации, которые может сделать компилятор, и он избегает некоторых из более медленных частей среды выполнения Objective-C.