У меня есть категория «NSObject + completeOnce». И я использую его для основного приложения, просмотра, виджета. Но я не добавил его в чат и цель виджета. Конечно, я должен это сделать.Нет предупреждений, если категория используется, но не добавляется в цель (любой способ проверить ее автоматически?)
Мой вопрос: «Почему я не вижу никаких предупреждений или ссылок на ошибки в этом случае? Могу ли я их заставлять?» У меня есть более 100 классов в моем проекте, а иногда делаю такой mitakes :(Было бы хорошо, чтобы найти какой-нибудь способ, чтобы проверить его, прежде чем запущенный
Категории декларация:.
//Category is added only into main target.
@interface NSObject (completeOnce)
+ (void)completeBlockOnce:(void(^)(void))block forKey:(NSString*)key
@end
Использование:
@implementation SomeOtherClass
+ (void)method
{
//It crashes for for widgets.
//And Here is no any warnings. Also no linking errors at all
[NSObject completeBlockOnce:^{
//Some Code
} forKey:@"FixMigrationBug_1_0_to_1_6"];
}
@end
Я уверен, что у меня есть только одно объявление этого метода. И я должен подчеркнуть, что это та же проблема для всех категорий. Даже для категорий моих пользовательских классов с уникальным именем метода 99%.
Какие методы определены в этой категории? Вы уверены, что они не конфликтуют с другими существующими именами? Как выглядят сайты вызовов этих методов? –
Спасибо за внимание, я добавил некоторую информацию. Думаю, он содержит ответы на ваши вопросы. – ZevsVU
Спасибо за информацию. Таким образом, основная проблема заключается в том, что вы импортируете заголовки на всех платформах, но когда вы не включаете фактический скомпилированный '.m' для этих целей, они вылетают, исправляются? Если это так, то я предполагаю, что вы не получаете ошибку компилятора, потому что у компилятора есть все, что нужно в файлах заголовка: объявление метода. Компилятору все равно, есть ли этот метод или нет, просто нужно посмотреть, как он выглядит. (До компоновщика, чтобы проверить.) Линкер, возможно, не сможет статически определить этот материал, так как он находится в категории - это зависит от времени выполнения. –