Разница между строками и массивами символов в цели c в операторах #import - PullRequest
1 голос
/ 11 января 2012

Я недавно заметил это, работая над приложением - почему при импорте файла вы используете

#import "SomeFile.h"

, но когда вы манипулируете строкой, вы используете символ @ перед строкой, напримеркак

NSLog(@"Hello World");

Я знаю, что эти два не являются взаимозаменяемыми, поэтому есть ли конкретная причина, по которой директива #import не принимает тип строки?За этим должна быть какая-то история / веская причина.Может быть.Спасибо за ваше время!

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Это потому, что #import - это макрос препроцессора, который компилируется до того, как среда выполнения objc станет частью изображения.Весь импорт - это обертка вокруг #include, которая гарантирует, что вы не включаете один и тот же файл дважды.

0 голосов
/ 11 января 2012

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

Компилятор использует собственный тип строки для поиска файла. Когда вы не используете ", вы на самом деле говорите о строке типа C или char[]. При использовании директивы @"" вы на самом деле говорите об объекте типа NSString, который в конце также является массивом символов с нулем в конце.

Так что, в принципе, они обе строки. Но директива @"" используется в Objective C для обозначения строкового объекта, а стандартная нотация " " используется для строковых типов языков более низкого уровня.

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