iOS工程结构理解

iOS开发中关于工程结构有三个关键部分,分别是:Targets,projects 和 workspaces.

Targets指定了工程或者库文件如何编译,包括building setting,compiler and linker flags,以及定义哪些文件(源文件和资源文件)属于工程。当运行或编译时,只能指定某一个target用于激活。

有时候可能会有多个target,它们共用一些源文件和资源文件,这些不同的target可以是app的稍微有点区别的不同版本(例如iPad/iPhone等)。所有这些相关的target可以被组合到一个project中。这个project包含其所有的target的所有文件。对于相同的build setting ,可以在project的build setting 中设置,对于某个target需要不同的设置,则对其build setting 单独设置即可。
*注意:对于project中build setting的设置,组成project的所有target都会继承,除非target单独设置。

workspace是多个project的集合,其包含和管理projects,workspace包含的所有的project都是相同的等级,并且它们的target是相互依赖的。

可参考 https://developer.apple.com/library/content/featuredarticles/XcodeConcepts/Concept-Projects.html#//apple_ref/doc/uid/TP40009328-CH5-SW1

时间: 2024-10-11 03:55:14

iOS工程结构理解的相关文章

[爱上Swift] day7:[转]我的iOS工程结构

转自:http://www.cocoachina.com/ios/20140930/9810.html 好的架构不是设计出来的,而是进化而来的! 写在前面 从2011年底开始学习iOS开发,到现在也已经快3年了,虽然中途没有一直进行iOS的开发(总是在Android和iOS间切换),但始终没有离开,而我现在的工作也一样,在iOS和Android间来回游走,正如我博客的slogan一样,“In Android&iOS”.其实对我来说,两个平台没有绝对的好坏,我都喜欢.我都热爱.有人会说,同样的产品

iOS工程结构

好的架构不是设计出来的,而是进化而来的! 写在前面 从2011年底开始学习iOS开发,到现在也已经快3年了,虽然中途没有一直进行iOS的开发(总是在Android和iOS间切换),但始终没有离开,而我现在的工作也一样,在iOS和Android间来回游走,正如我博客的slogan一样,“In Android&iOS”.其实对我来说,两个平台没有绝对的好坏,我都喜欢.我都热爱.有人会说,同样的产品在不同平台做两次不会觉得厌烦吗?这个问题我会给出肯定的回答,不会!因为如果你真的喜欢你所做的产品,做多少

我的iOS工程结构

好的架构不是设计出来的,而是进化而来的! 项目结构 下图是iOS项目的一个常用工程结构,整体模式还是按照MVC的结构,只是在每一层做了一些细分处理,下面就简单介绍下. iOS工程中没有像Java那样非常严格的分包机制,不过在iOS工程中我们也可以通过Group的方式在工程中实现逻辑分包,这样更有利于我们组织和管理代码,使工程结构更清晰和易于理解. Application:这个group中放的是AppDelegate和一些系统常量及系统配置文件: Base:一些基本父类,包括父ViewContro

ios开发理解nil,Nil, NULL

nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空.这些可以理解为nil,Nil, NULL的区别吧. iOS剪切板 UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.string = @"要赋给剪切板的字符串"; 1 ID 可以传递任何消息给id,但如果该id不支持这个消息就会返回一个运行时异常,通常就是:“unrecognisedselector sent to

IOS 语法 - 理解UIEdgeInsets

主要是理解下 UIEdgeInsets 在IOS UI里的意义.其实 UIEdgeInsets 就是控件的内容与各边的间隔.正值表示间隔值,负值表示超出参照物的距离. 但是在 IOS 的控件,只有 UIButton 可以设置 Padding/Insets,即按钮上文字或图片与按钮边界的间隙,对与 CSS 来说叫做 Padding,在 iOS 中叫做 Insets,UIButton 设置 Insets 相应的属性如下: Configuring Edge Insets contentEdgeInse

iOS Runloop理解

一.RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程.RunLoop就是控制线程生命周期并接收事件进行处理的机制. RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统. Foundation: NSRunLoopCore Foundation: CFRunLoop 核心部分,代码开源,C 语言编写,跨平台 二.目的 通过RunLoop机制实现省电,流畅,响应速度快,用户体验好 三.理解 进程是一家工厂,线程是一个流水线,Run Loo

IOS KeyChain理解及代码事例

对KeyChain的理解,可参照http://my.oschina.net/w11h22j33/blog/206713 文中利用KeyChain保存用户名和密码,用户名放在属性中,密码放在密码项中:其中对KeyChain项的增删改查,我个人觉得是有问题的,为了方面自己代码上的使用,也帮助阅读该文的其他读者更好的理解,我修正了代码如下: //存储/增加 -(IBAction)saveClicked:(id)sender{ if(_nameTF.text.length > 0 && _p

iOS 深入理解RunLoop

RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池.延迟回调.触摸事件.屏幕刷新等功能的. IndexRunLoop 的概念RunLoop 与线程的关系RunLoop 对外的接口RunLoop 的 ModeRunLoop 的内部逻辑RunLoop 的底层实现苹果用 RunLoop 实现的功能AutoreleaseP

iOS~runtime理解 - (开发面试必备)

什么是Runtime? Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的. 多数情况我们只需要编写 OC 代码即可,Runtime 系统自动在幕后搞定一切,所以很多朋友对runtime不是很重视,等面试的时候经常被面试官卡住.我也是新手,吃了这个亏,所以对runtime进行了学习,以通俗易懂的方式分享给大家 Runtime 的作用 可以通过Runtime修改系统方法,比方说我们平时在项目中用到WKWebV