String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // prints false
System.out.println(a.equals(b)); // prints true
Удостоверяются, что Вы понимаете почему. Это - потому что ==
сравнение только сравнивает ссылки; equals()
метод делает познаковое сравнение содержания.
, Когда Вы называете новыми для a
и b
, каждый получает новую ссылку, которая указывает на "foo"
в таблице строк. Ссылки отличаются, но содержание является тем же.
См. Инструмент lipo . Это позволит вам сшить ваши двоичные файлы PPC и i386.
Кроме того, иногда можно избежать отдельных целей для разных архитектур, используя параметры условной сборки в Xcode. Это полезно, например, если вам нужно связать разные бинарные библиотеки для каждой архитектуры.
Посмотрите справочную страницу по липо. Я считаю, что вы можете использовать -create, чтобы взять несколько входных файлов и создать один выходной файл с несколькими архитектурами.
Чтобы создать универсальный двоичный файл, вы должны использовать Xcode и выбрать Intel и целевые архитектуры PPC. Насколько мне известно, вы не можете просто поместить два разных двоичных файла в один .app постфактум.
На веб-сайте разработчиков Apple есть статья о Создание универсального двоичного файла с открытым исходным кодом , в которой объясняется, как использовать Xcode для «упаковки» универсального двоичного файла с использованием сценариев сборки. Вероятно, это ваш лучший путь к здравомыслию. Вы можете использовать lipo
, но в долгосрочной перспективе, если вы собираетесь обновлять и поддерживать свое приложение, наличие проекта Xcode, который творит чудеса за вас, отнимет у вас гораздо меньше времени.