Как мне использовать слабые ссылки в Xcode 4?

Мне нужно слабо связать какой-то фреймворк с моей целью.
Но я не могу найти, как это сделать...

Если я попытаюсь запустить свой проект на симуляторе iPad 3.2, я получу следующую ошибку:

dyld: Library not loaded: /System/Library/Frameworks/iAd.framework/iAd
Reason : Image not found

Спасибо !


person Quentin Hayot    schedule 25.06.2011    source источник


Ответы (2)


Перейдите в свой проект -> Цели -> Фазы сборки -> Связать двоичный файл с библиотеками.

Затем измените библиотеку, для которой вы хотите создать слабую ссылку, с «Обязательно» на «Необязательно».

person uvesten    schedule 25.06.2011
comment
Я включил фреймворк как необязательный, и приложение запускается на устройстве, но я получаю это сообщение в консоли - [ViewController contollerABC] [ABCDocument withDocumentFilePath: '/var/mobile/Containers/Bundle/Application/DFBD7E29-CD8E-4F3B-AA56 -2A9A55F63499/XYZKitDemo.app/Document.pdf' пароль:'(null)'] не удалось. . Не могли бы вы сообщить мне, в чем проблема? - person Md Rais; 03.12.2015
comment
Сломано. - person Code Wiget; 01.06.2020

Это не работает сейчас. Перейдите по ссылке ниже: https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html

Выберите цель, которую вы хотите изменить, и откройте этапы ее сборки.

Разверните фазу сборки Link Binary With Libraries, чтобы просмотреть платформы, которые в настоящее время связаны целью.

Если фреймворк, на который вы хотите слабо связать, указан на этапе сборки Link Binary With Libraries, выберите его и выберите «Правка» > «Удалить», чтобы удалить его.

Теперь вы можете указать компоновщику использовать слабое связывание для этой структуры.

Выберите цель, откройте ее информационное окно и нажмите «Создать».

В параметр сборки Other Linker Flags добавьте следующую спецификацию параметра командной строки, где FRAMEWORK_NAME — это имя фреймворка, на который вы хотите слабо связать: -weak_framework FRAMEWORK_NAME

Создайте свой продукт.

person ronguotech    schedule 04.02.2013
comment
Для меня, использующего Xcode 12.3 в декабре 2020 года, принятый ответ, данный uveten (изменить обязательное на необязательное), работает и имеет тот же эффект, что и этот ответ. То есть, когда я смотрю в Build Transcript на этапе связывания, когда всплывающее окно для FRAMEWORK_NAME было установлено как Required, вызов компоновщика имеет аргумент -framework FRAMEWORK_NAME, но если для FRAMEWORK_NAME было установлено значение Optional, аргумент вместо этого имеет -weak_framework РАМКА_ИМЯ. Таким образом, если в 2013 году Required vs.Optional действительно была нарушена, Apple, по-видимому, с тех пор исправила ее. - person Jerry Krinock; 23.12.2020
comment
Привет! Спасибо! у меня еще вопрос как исключить библиотеки для архитектур armv7? - person Miras Maratuly; 26.01.2021