Objective-C, static libraries, categories, -ObjC, боль…
Для примера ради рассмотрим один класс + его категорию


Интегрированная среда разработки ПО

Перед началом майских праздников я провел 5 плотных дней за написанием приложения под iOS и Mac для конкурса. Разработка шла планомерно, к последнему дню работа приложения меня начала более-менее удовлетворять. Я решил отложить отправление на утро самого последнего дня, чтобы сделать это со свежой головой (там нужно было еще приложить текстовое описание). Утром, за несколько часов до поезда в отпуск, я сел и со спокойной душой сделал финальную обкатку основного функционала. И тут мне показалось хорошей идеей потестить, как будет вести себя приложение на абсолютно другой машине, на которой не велась разработка. Я архивирую свое приложение, перекидываю его на другой Mac и… оно не запускается. С супер-информативной ошибкой "Image not found" и путём явно указывающим на проблему с dylib. Итак: 3 часа до поезда и не запускающиеся по непонятным причинам приложение. Почему это произошло, как этого можно было бы избежать и как я справился с этой проблемой — обо всём этом под катом.
NSString *myGlobalVariable;
duplicate symbol _myGlobalVariable in:
/Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
/Users/L/Library/Developer/Xcode/DerivedData/…/MyClass1.o
duplicate symbol _myGlobalVariable in:
/Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
/Users/L/Library/Developer/Xcode/DerivedData/…/MyClass2.o
duplicate symbol _myGlobalVariable in:
/Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
/Users/L/Library/Developer/Xcode/DerivedData/…/MyClass3.o
duplicate symbol _myGlobalVariable in:
/Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
/Users/L/Library/Developer/Xcode/DerivedData/…/MyClass4.o
ld: 4 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)


if (![db open]) {
[db release];
return;
}









