如何为iOS应用程序创建objective-C Framework

时间:2011-03-22 10:30:25

标签: iphone objective-c ipad frameworks

我正在创建一些可以重复使用的泛型类。

对于例如:共享函数 - 如果我们在项目中需要此功能,那么我们当前需要在该项目中添加一组类并在该组文件中显示视图控制器。在此视图控制器中有按钮什么都需要处理共享。

我的想法是,如果项目需要这样的功能,他们需要添加框架并在其中调用函数或在框架中显示指定的视图,即。没有为您执行该项目的代码级访问权限。因此,如果在通用类(框架)中发现任何问题,我需要修复它并重新创建框架并更改使用此框架的所有项目,而不会影响现有项目。

我不仅认为共享功能。更像是图像滑块,PDF查看器,浏览器。封面流程。目前我有所有这些功能的代码。但是,将其整合并使用它需要花费太多时间。如果发现任何问题,我们需要更改所有项目源类。

我在谷歌浏览了几个链接

Can I develop my own objective-C Framework for Cocoa Touch Applications?

http://www.cocoanetics.com/2010/04/universal-static-libraries/

A Guide for Creating your own Library for Cocoa(touch) development

我无法理解它是如何使用的,有些人还没有完全解释它。这些链接中缺少一些。

提前致谢

6 个答案:

答案 0 :(得分:8)

查看本指南,了解如何创建静态iOS框架:

https://github.com/jverkoey/iOS-Framework

答案 1 :(得分:4)

我猜你要的是如何为iOS创建一个共享的动态库;它的长短是:你不能。

唯一支持的库是静态库;所以每当你改变你的图书馆;每个使用它的应用程序都需要重新编译。

答案 2 :(得分:3)

http://accu.org/index.php/journals/1594提供详细说明。

OCHamcrest通过获取框架的OS X版本的副本,并用iOS静态库替换其动态库来实现它。 (即将推出Xcode 4版本。)

答案 3 :(得分:3)

我们在Objective c中创建了框架,这是完美的工作。

按照以下简单步骤创建框架

1)创建新框架,

在xcode中选择

 file =>New =>Project =>cocoatouchframework =>Next =>GiveframeworkName =>Create  

enter image description here

2)在project中添加.h和.m文件,用于create Framework。

3)在构建阶段在Public Headers中添加文件,此文件将显示在您的框架中。

enter image description here

4)点击项目名称 DemoFramework ,然后选择 + 按钮 选择

Cross-platform =>Aggregate 

enter image description here

5)添加运行脚本

enter image description here

6)在Run脚本中添加以下代码到Aggregate(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设备构建。

enter image description here

您将看到为iPhone设备创建框架,框架位置在项目的派生数据中显示如下。

enter image description here

2)为模拟器构建。

enter image description here

您将看到为Simulator创建框架,框架位置在项目的派生数据中显示如下。

enter image description here

3)这是创建框架的最后一步, 选择生成选项中的聚合并构建应用程序,请参见下面的屏幕截图。 enter image description here

最后,您的框架在任何应用程序中都使用此框架创建,Framework位置在以下派生数据中。

enter image description here

希望这个简单的步骤可以帮助某人在目标C中创建框架。

答案 4 :(得分:0)

我构建了Xcode 4模板来执行此操作。请在此处查看我的回答:Can I develop my own objective-C Framework for Cocoa Touch Applications?

答案 5 :(得分:0)

Objective-C使用者-> Objective-C动态框架

Xcode版本10.2.1

创建Objective-C框架

关注Create Objective-C framework

具有Objective-C框架的Objective-C使用者

关注Swift consumer with Objective-C framework

将模块导入到Objective-C客户端代码[module_name]

@Override
public void onViewCreated(@NonNull View view, @Nullable final Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    adapter = new UserAdapter(getContext(), R.layout.list_item, userList);
}

调用框架的代码[Use of undeclared identifier]

More examples here