Iphone 如何为iOS应用程序创建objective-C框架 我正在创建一些可用于大量应用程序的泛型类。
例如:共享功能-如果我们在项目中需要此功能,那么我们当前需要将一组类添加到该项目中,并在该组文件中显示视图控制器,在该视图控制器中有按钮以及所有需要处理共享的内容 我的想法是,如果一个项目需要这样的功能,他们需要添加一个框架,并在其中调用一个函数,或者在框架中显示指定的视图,也就是说,没有代码级别的访问权限给你做这个项目的人。因此,如果在泛型类(框架)中发现任何问题,我需要修复它,并在使用该框架的所有项目中重新创建框架和更改,而不会影响现有项目 我认为不仅仅是分享功能。更像是图像滑块、PDF查看器和浏览器。覆盖流。目前我有所有这些函数的代码。但是,其他人需要花费太多的时间来集成和使用它。如果发现任何问题,我们需要更改所有项目源类 我在谷歌上浏览了几个链接 我无法理解它是如何使用的,其中一些人没有充分解释它。这些链接中缺少一些内容Iphone 如何为iOS应用程序创建objective-C框架 我正在创建一些可用于大量应用程序的泛型类。,iphone,objective-c,ipad,frameworks,Iphone,Objective C,Ipad,Frameworks,例如:共享功能-如果我们在项目中需要此功能,那么我们当前需要将一组类添加到该项目中,并在该组文件中显示视图控制器,在该视图控制器中有按钮以及所有需要处理共享的内容 我的想法是,如果一个项目需要这样的功能,他们需要添加一个框架,并在其中调用一个函数,或者在框架中显示指定的视图,也就是说,没有代码级别的访问权限给你做这个项目的人。因此,如果在泛型类(框架)中发现任何问题,我需要修复它,并在使用该框架的所有项目中重新创建框架和更改,而不会影响现有项目 我认为不仅仅是分享功能。更像是图像滑块、PDF查看
提前感谢我猜您想要的是如何为iOS创建共享动态库;长话短说就是:你不能 唯一受支持的库是静态库;因此,每当你对你的库进行更改时;每个使用它的应用程序都需要重新编译。提供了详细的说明
通过复制OSX版本的框架,并将其动态库替换为iOS静态库来实现这一点。(Xcode 4版本即将推出。)我构建了Xcode 4模板来实现这一点。请参阅我的答案:查看此关于创建静态iOS框架的指南:
我们在目标c中创建了框架,它的工作非常完美 通过以下简单步骤创建框架 1) 创建新的框架 在xcode中选择
file =>New =>Project =>cocoatouchframework =>Next =>GiveframeworkName =>Create
2) 在项目中添加.h和.m文件,用于创建框架
3) 在构建阶段将文件添加到公共标题中,此文件将显示在您的框架中
# ============Script Start==============
if [ "${ACTION}" = "build" ]
then
# Set the target folders and the final framework product.
INSTALL_DIR=${SYMROOT}/DemoFramework.framework
DEVICE_DIR=${SYMROOT}/Debug-iphoneos
SIMULATOR_DIR=${SYMROOT}/Debug-iphonesimulator
# Create and renews the final product folder.
mkdir -p "${INSTALL_DIR}"
rm -rf "${INSTALL_DIR}"
rm -rf "${INSTALL_DIR}/DemoFramework"
# Copy the header files to the final product folder.
ditto "${DEVICE_DIR}/DemoFramework.framework/Headers"
"${INSTALL_DIR}/Headers"
# Copy the info.plist file to the final product folder
ditto "${DEVICE_DIR}/DemoFramework.framework/info.plist"
"${INSTALL_DIR}"
# Copy the ResoureBundle.bundle file to the final product folder
ditto "${DEVICE_DIR}/DemoFramework.framework/ResourceBundle.bundle"
"${INSTALL_DIR}/ResourceBundle.bundle"
# Use the Lipo Tool to merge both binary files (i386 + armv6/armv7)
into one Universal final product.
lipo -create "${DEVICE_DIR}/DemoFramework.framework/DemoFramework"
"${SIMULATOR_DIR}/DemoFramework.framework/DemoFramework" -output
"${INSTALL_DIR}/DemoFramework"
fi
# ============Script End==============
4) 单击项目名称DemoFramework,然后选择+按钮
挑选
5) 添加运行脚本
6) 在运行脚本中将以下代码添加到聚合(marge)iPhone和模拟器框架中
# ============Script Start==============
if [ "${ACTION}" = "build" ]
then
# Set the target folders and the final framework product.
INSTALL_DIR=${SYMROOT}/DemoFramework.framework
DEVICE_DIR=${SYMROOT}/Debug-iphoneos
SIMULATOR_DIR=${SYMROOT}/Debug-iphonesimulator
# Create and renews the final product folder.
mkdir -p "${INSTALL_DIR}"
rm -rf "${INSTALL_DIR}"
rm -rf "${INSTALL_DIR}/DemoFramework"
# Copy the header files to the final product folder.
ditto "${DEVICE_DIR}/DemoFramework.framework/Headers"
"${INSTALL_DIR}/Headers"
# Copy the info.plist file to the final product folder
ditto "${DEVICE_DIR}/DemoFramework.framework/info.plist"
"${INSTALL_DIR}"
# Copy the ResoureBundle.bundle file to the final product folder
ditto "${DEVICE_DIR}/DemoFramework.framework/ResourceBundle.bundle"
"${INSTALL_DIR}/ResourceBundle.bundle"
# Use the Lipo Tool to merge both binary files (i386 + armv6/armv7)
into one Universal final product.
lipo -create "${DEVICE_DIR}/DemoFramework.framework/DemoFramework"
"${SIMULATOR_DIR}/DemoFramework.framework/DemoFramework" -output
"${INSTALL_DIR}/DemoFramework"
fi
# ============Script End==============
7) 现在分三步构建项目
1) 为iPhone设备构建
您将看到框架是为iPhone设备创建的,框架位置显示在项目的派生数据中,如下所示
2) 为模拟器构建
您将看到框架是为模拟器创建的,框架位置显示在项目的派生数据中,如下所示
3) 这是创建框架的最后一步,
选择Aggregate in build(在构建中聚合)选项并构建应用程序,请参见下面的屏幕截图。
最后,在任何应用程序中使用此框架创建框架,框架位置位于派生数据中,如下所示
希望这些简单的步骤能帮助人们在objective C中创建框架。objective-C consumer->objective-C dynamic framework
Xcode版本10.2.1
创建Objective-C框架
跟随
具有Objective-C框架的Objective-C消费者
跟随
将模块导入Objective-C客户端代码
@导入模块\u名称;
//或伞或公共标题
#进口
调用框架的代码
这个。另外,不要被操作系统所愚弄。操作系统被允许(并且确实)销售和使用共享动态库框架,而非操作系统开发人员不能。如果你仔细想想,它在iOS上买不到多少东西:你的应用程序运行在它自己的沙箱中,在平台上允许任意共享动态库可能会破坏这种机制(至少,这会使事情复杂化)。我不会屏住呼吸等待这个。谢谢Williham,但我创建了一个框架。一个用于xcode的扩展,但它是C代码。啊,但是你可以伪造一个包含静态库的框架。单个实例不会在应用程序之间共享,因此每个应用程序都有自己的副本。但是框架比静态库+头更容易管理。@JonReid:可能是这样;但是从您的回答中我可以看到,管理框架的构建显然不那么容易管理。是的。生产者越难,消费者越容易。如果你们两个都是,这可能是个错误。我想这就是我正在寻找的答案。。但我现在正忙于其他项目,所以我将在几周内返回结果OCHamcrest使用的方法是使用运行脚本。我发现这在Xcode 4中不起作用,所以我正在从项目中提取脚本,并将在外部运行它。请您解释一下,我们如何在不使用Xcode的情况下在外部执行脚本。从终端执行脚本。我使用Xcode 4.6.3时得到了这一点,但不幸的是,这些指令已经过时了。请查看问题列表以查找修复。恐怕您的脚本有问题:mkdir-p“${INSTALL\u DIR}”rm-rf“${INSTALL\u DIR}”
@import module_name;
//or umbrella or public header
#import <module_name/module_name.h>