Мой проект только Obj-C. Через Cocoapods я попытался установить библиотеку Obj-C, которая использует преимущества IBDesignable и IBInspectable. Если я добавлю этот проект в свою библиотеку и запущу 'pod install', я получу две ошибки при сборке/запуске:
error: IB Designables: Failed to update auto layout status: Failed to load designables from path (null)
error: IB Designables: Failed to render instance of PKCircleProgressView: Failed to load designables from path (null)
Итак, очевидно, чтобы воспользоваться преимуществами IBDesignable/IBInspectable, ваш код должен быть в фреймворке, а не в статической библиотеке. Кажется, все, что мне нужно сделать, это добавить это в мой подфайл:
use_frameworks!
Когда я это делаю, я могу видеть все в Interface Builder, но когда я создаю/запускаю, он не может найти AFNetworking.h
. Я не думаю, что ошибка связана с AFNetworking, это просто первый модуль в моем подфайле.
Если бы я использовал Swift, похоже, что ответ заключается в том, что мне нужно добавить все библиотеки из моего подфайла в мой соединительный заголовок Swift/Obj-C.
Несмотря на то, что я не использую Swift, мне все равно нужно создавать соединительный заголовок?
Вот мой подфайл (без модуля DownloadButton и без use_frameworks!):
platform :ios, '8.0'
pod 'AFNetworking'
pod 'FMDB'
pod 'HKCircularProgressView'
#pod 'Taplytics'
pod 'PAPreferences'
pod 'HTMLLabel'
pod 'IDMPhotoBrowser'
pod 'MBProgressHUD'
link_with 'Langham', 'Leela', 'Las Alcobas', 'Siam', 'AKA BH', 'Ritz Montreal', 'Fullerton', 'Fullerton Bay'
# Fix broken copy-resources phase per https://github.com/CocoaPods/CocoaPods/issues/1546
post_install do |installer|
installer.pods_project.targets.each do |target|
scriptBaseName = "\"Pods/Target Support Files/#{target.name}/#{target.name}-resources\""
sh = <<EOT
if [ -f #{scriptBaseName}.sh ]; then
if [ ! -f #{scriptBaseName}.sh.bak ]; then
cp #{scriptBaseName}.sh #{scriptBaseName}.sh.bak;
fi;
sed '/WRAPPER_EXTENSION/,/fi\\n/d' #{scriptBaseName}.sh > #{scriptBaseName}.sh.temp;
sed '/*.xcassets)/,/;;/d' #{scriptBaseName}.sh.temp > #{scriptBaseName}.sh;
rm #{scriptBaseName}.sh.temp;
fi;
EOT
`#{sh}`
end
end
Obj-C
интерфейсыSwift
, а не наоборот. - person SwiftArchitect   schedule 09.08.2015