«Сбой команды компоновщика Apple Mach-O с кодом выхода 1» - PullRequest
9 голосов
/ 21 марта 2012

Я пытаюсь реализовать индикатор активности SVProgressHUD.Я скопировал классы в свой проект и добавил следующий код в appDelegate, но не могу понять, почему он дает сбой.

Я получаю следующую ошибку и не знаю, где ее исправить:

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_SVProgressHUD", referenced from:
objc-class-ref in QuotesAppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Вот код:

#import "SVProgressHUD.h"

@implementation QuotesAppDelegate


- (void)startLoading
{
    //call this in your app delegate instead of setting window.rootViewController to your main view controller
    //you can show a UIActivityIndiocatorView here or something if you like
    [SVProgressHUD show];
    [self performSelectorInBackground:@selector(loadInBackground) withObject:nil];
}

- (void)loadInBackground
{
    //do your loading here
    //this is in the background, so don't try to access any UI elements
    [self populateFromDatabase];

    [SVProgressHUD dismiss];

    [self performSelectorOnMainThread:@selector(finishedLoading) withObject:nil waitUntilDone:NO];
}

- (void)finishedLoading
{
    //back on the main thread now, it's safe to show your view controller
    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];
}


- (void)applicationDidFinishLaunching:(UIApplication *)application {

[self copyDatabaseIfNeeded];

    [self startLoading];

}

Ответы [ 5 ]

16 голосов
/ 21 марта 2012

Редактировать

Ответ, который я предоставил (см. Мой оригинальный ответ ), только устраняет проблему, но не является правильным решением.Для правильных решений см. Джим ответ

Похоже, что SVProgressHUD.m не включен для вашей цели.Нажмите на него в навигаторе проекта на левой панели, затем посмотрите на инспектор файлов на правой панели, чтобы убедиться, что рядом с целью, которую вы строите, стоит галочка.

или Parth Bhatt ссылка.

Ради полноты

Экспериментируя немного, я обнаружил, что при перетаскивании файла или каталога вВ вашем проекте Xcode (4.3.1) просит вас выбрать правильную опцию, чтобы добавить эти файлы или каталог в ваш проект.Убедитесь, что установлен флажок «Добавить к целям».

Если вы пропустили проверку этого параметра, вам необходимо выполнить следующие действия:

  1. Выберите YourProjectName
  2. Выбрать ЦЕЛИ
  3. Выбрать этапы сборки
  4. Добавить .m классы в разделе источников компиляции

Мой первоначальный ответ

Если вы перетащили эти классы в свой проект, это может быть проблемой.

Чтобы избежать этой ошибки компиляции, используйте вместо этого «Добавить файлы в YourProjectName».

Предположим, у вас есть каталог, содержащийФайлы .h и .m с именем «SVProgressHUD» на вашем рабочем столе.

Теперь вам необходимо:

  1. Удалить предыдущие файлы (как .h, так и .m)
  2. Щелкните правой кнопкой мыши в своем проекте
  3. Выберите «SVProgressHUD» dir с «Добавить файлы в YourProjectName» (установите следующие флажки: Назначение Копировать элементы ... и Папки Создание групп для любых ...)

Надеюсь, что чELPS.

2 голосов
/ 21 марта 2012

Похоже, SVProgressHUD.m не включен для вашей цели. Нажмите на него в навигаторе проекта на левой панели, затем посмотрите на инспектор файлов на правой панели, чтобы убедиться, что рядом с целью, которую вы строите, стоит галочка.

0 голосов
/ 03 ноября 2016

Я решил эту проблему, изменив настройки проигрывателя в редакторе Unity.

Путь по меню: PlayerSettings> OtherSettings> Скриптовое изменение Backend для IL2CPP из Mono2x.

Второе изменение состояло в том, чтобы изменить Архитектуру на универсальную.

0 голосов
/ 21 марта 2012

Оформить заказ по этой ссылке. См. Принятый ответ по этой ссылке:

Неопределенные символы для архитектуры i386: _OBJC_CLASS _ $ _ SKPSMTPMessage ", ссылка из: error

Если это не помогло, обратитесь к ответу Аллена Пайка по приведенной выше ссылке. попробуйте удалить и добавить обратно QuartzCore framework в вашем приложении.

Надеюсь, это поможет вам.

0 голосов
/ 21 марта 2012
  1. проверьте, есть ли у вас какие-либо объекты, которые вы могли ранее удалить, не зная об этом
  2. проверьте, все ли ваши объекты подключены, например, если у вас есть MapView, но без подключения, он выходит из строя
  3. , если это не работает, попробуйте очистить приложение или просто перезапустить iPhone и Xcode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...