Платформа пакета с приложением в XCode

Контекст этот ответ сдан, является языком Java.

Для нормальных ошибок, которые могут открыться, мы обрабатываем тех непосредственно (таких как возврат сразу, если что-то является пустым, пустым, и т.д.). Мы только используем фактическое исключение для исключительных ситуаций.

Однако мы не бросаем контролируемые исключительные ситуации, никогда. Мы разделяем RuntimeException на подклассы для наших собственных определенных исключений, ловя их когда это применимо непосредственно, и что касается исключений, которые выдаются другими библиотеками, API JDK, и т.д., мы действительно пробуем/ловим внутренне и любой журнал исключение (если что-то произошло, который действительно не должен иметь, и у Вас нет способа восстановиться как файл, не найденный исключением для пакетного задания), или мы обертываем исключение в RuntimeException и затем бросаем его. За пределами кода мы полагаемся на обработчик исключений, чтобы в конечном счете поймать тот RuntimeException, быть что JVM или веб-контейнер.

причина, это сделано, состоит в том, что это старается не создавать вызванные блоки попытки/выгоды везде, где у Вас могло бы быть четыре экземпляра вызова метода, но только один может на самом деле обработать исключение. Это, кажется, правило, не (никакая игра слов, предназначенная... ай) исключение, поэтому если тот четвертый может обработать его, это может все еще поймать его и исследовать первопричину исключения получить фактическое исключение, которое произошло (не вызывая беспокойство об обертке RuntimeException).

21
задан bapibopi 15 March 2016 в 09:07
поделиться

2 ответа

Когда OpenCV.framework был собран, он был настроен на использование пути установки / Users / david / Library / Frameworks / .

Поскольку вы хотите чтобы использовать библиотеку как частный фреймворк (установленный в оболочке приложения по адресу ClipSplitter.app/Contents/Frameworks/OpenCV.framework ), вам необходимо изменить путь установки. Это можно легко сделать с помощью терминала следующим образом:

$ install_name_tool -id @executable_path/../Frameworks/OpenCV.framework/OpenCV <your_path>/OpenCV.framework/OpenCV

Конечно, вам нужно настроить путь последнего аргумента.

Теперь, когда вы связываете ваше приложение, ваша модифицированная структура сообщает компоновщику, что dyld должен искать OpenCV.framework в оболочке вашего приложения (в каталоге ClipSplitter.app/Contents/Frameworks).

Теперь вам нужно скопировать OpenCV.framework в оболочку вашего приложения. Вы можете сделать это как часть процесса сборки, добавив этап создания копий файлов: щелкните правой кнопкой мыши цель, выберите «Добавить» -> «Новая фаза сборки» -> «Новая фаза сборки копий файлов». Выберите «Frameworks» из всплывающего окна «Destination» и закройте диалоговое окно.

Ваша цель теперь будет содержать новую фазу, к которой вы можете добавить OpenCV.framework, перетащив значок из Project Navigator в левой части Xcode окно. Обратите внимание, что Xcode не позволит вам добавить папку на этапе копирования файлов с помощью кнопки «+», поэтому для копирования структуры вам придется перетащить ее.

Ваша цель теперь будет содержать новую фазу, к которой вы можете добавить OpenCV.framework, перетащив значок из навигатора проекта в левой части окна Xcode. Обратите внимание, что Xcode не позволит вам добавить папку на этапе копирования файлов с помощью кнопки «+», поэтому для копирования структуры вам придется перетащить ее.

Ваша цель теперь будет содержать новую фазу, к которой вы можете добавить OpenCV.framework, перетащив значок из навигатора проекта в левой части окна Xcode. Обратите внимание, что Xcode не позволит вам добавить папку на этапе копирования файлов с помощью кнопки «+», поэтому для копирования структуры вам придется перетащить ее.

30
ответ дан 29 November 2019 в 20:48
поделиться

Вам необходимо установить для параметра сборки «Каталог установки» значение @executable_path /../ Frameworks

См. Главу о встраивании частной инфраструктуры в пакет приложений в ] https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Tasks/CreatingFrameworks.html

С уважением

6
ответ дан 29 November 2019 в 20:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: