2016-07-27 12 views
1

У меня есть файл «MyConstants.h», который импортируется несколькими классами.Xcode жалуется на неиспользованные функции, которые используются

Внутри этого файла у меня есть такие вещи, как:

static BOOL isIndexValid(NSInteger index) { 
    return ((index >=0) && (index < 200)); 
} 

Эта функция широко используется классами импортирующих MyConstants.h. Тем не менее, Xcode жалуется, что эта функция и другие не используются.

Почему?

ответ

3

Определение функции static (или переменной, если на то пошло) в файле заголовка означает, что каждый исходный файл, который импортирует этот файл заголовка, получит свою собственную копию.

Это нехорошо и то, о чем компилятор жалуется (не каждый исходный файл ссылается на эту функцию).

Сделать это static inline вместо:

static inline BOOL isIndexValid(NSInteger index) { 
    return ((index >=0) && (index < 200)); 
} 
+0

Спасибо за отзыв. Ты был почти там. На самом деле проблема решена, когда я помещаю 'static inline'. Просто 'inline' усложнила проблему. Благодарю. Я соглашусь, когда я позволю. – SpaceDog

+0

BTW Я думал, что статическое слово заставит компилятор создать только одну версию элемента с тем же адресом в памяти. – SpaceDog

+0

@SpaceDog Только если вы поместили его непосредственно в исходный файл, а не в заголовочный файл. – Droppy

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

  • Нет связанных вопросов^_^