2012-06-22 6 views
0

Я совершенно новый для iPhone dev (я из C# фона). Насколько я понимаю - файл .h считается интерфейсом (заголовок) &. Файл .m имеет соответствующую реализацию (метод).iPhone - это .h файл - интерфейс и .m файл - реализация?

Поэтому обязательно, чтобы файл .m должен иметь всю реализацию, соответствующую файлу .h, &, наоборот.

Но когда я пытаюсь, я могу объявить какой-либо метод в файле .h без какой-либо реализации в .m & вице-стих. Он компилирует &, работая правильно, без каких-либо ошибок. Почему это?

Пожалуйста, исправьте меня, если мое понятие неверно.

Благодаря

ответ

1

заголовочный файл заголовочного файл класса он содержит определение функций, в С и С ++ определение функции может существовать без его тела, однако вызов этой функции вызовет исключение быть выброшено

.m файл является реализация, она содержит реализацию функций вы определили в файле .h,

+0

Технически говоря, заголовочный файл содержит «объявления», а файл m содержит «определения»! Вы можете определенно определить функциональность в заголовке, но это не сделано. – trumpetlicks

+0

Благодарим вас за быстрый ответ. Но как насчет случая - когда - есть реализация (реализация метода) в файле .m без какого-либо объявления в файле .h? –

+0

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

0

Да это, потому что если вы объявляете функцию ... то это не является обязательным дать реализацию этой функции. Вот почему она дает только предупреждение о том, что ваша реализация not complete.as .h - файл декларации, а .m - файл реализации.

+0

Благодарим вас за быстрый ответ. Но как насчет случая - когда - есть реализация (реализация метода) в файле .m без какого-либо объявления в файле .h? Почему это не приводит к ошибке? –

+0

он также даст вам предупреждение ... связанное с oops .. Если мы относимся к классу, то в классе он имеет только определение функции и элемент данных. – Abhishek

Смежные вопросы