Какао лучшие практики для разработки пользовательских фреймворков, которые требуют фреймворка Apple - PullRequest
4 голосов
/ 04 августа 2011

Допустим, у меня есть пользовательский фреймворк с дюжиной классов и категорий.Все они наследуют / расширяют стандартные классы какао.По этой причине мой фреймворк связывается с во время компиляции.

Мой вопрос: если я добавлю класс, который требует , каков рекомендуемый способ его упаковки?

1) Если я просто добавлю класс в платформу и импортирую QuartzCore, любой потребитель моей инфраструктуры также должен будет импортировать QuartzCore.

2) Если я переместу класс в другую платформу, любой потребитель должен импортировать обамои рамки, чтобы получить полную функциональность, а также QuartzCore.Никакие классы в первой платформе не могут использовать вторую платформу.

3) Есть ли способ сделать #ifdef #endif или что-то подобное, а затем ослабить связь каркаса QuartzCore так, чтобы классы как Cocoa, так и QuartzCore-зависимые классы находятся в единой структуре, но потребители не должны добавлять QuartzCore в свои проекты?Если QuartzCore в идеале отсутствует, класс / категория просто не будут доступны для среды выполнения.

1 Ответ

2 голосов
/ 11 апреля 2012

Лично я бы пошел с # 1.В любом случае любое нетривиальное приложение должно быть связано с QuartzCore.

Вы можете слабо связать Framework с вашим.Удалите QuartzCore из фреймворков, на которые вы ссылаетесь, а затем добавьте в «Другие флаги компоновщика» аргумент «-weak_framework QuartzCore».

Полная документация по слабым ссылкам находится в Xcode.Существует руководство под названием «Слабая связь с фреймворками Apple».

...