ios工程_ios工程师 - CSDN
  • 修改iOS工程的名字

    千次阅读 2016-12-08 11:13:57
    我们在iOS开发中,难免会遇到项目做到一半要改名字的情况。如果项目名差的太大,工程名看起来总是不舒服的,有良心的开发者可能就会想着为工程改个贴切的名字,那么你就为用到本文记录的内容。 如果我们开发的两个...

    我们在iOS开发中,难免会遇到项目做到一半要改名字的情况。如果项目名差的太大,工程名看起来总是不舒服的,有良心的开发者可能就会想着为工程改个贴切的名字,那么你就为用到本文记录的内容。
    如果我们开发的两个项目相差不大,只有部分主题、布局有更改,那么我们就可以拷贝之前已经完成的项目,改改名字,再对部分界面和代码稍稍修改就可以啦。

    如何修改工程名呢?

    下面我就拿一个中等大小的项目来实际操作一下,并记录整个要修改的地方。
    该项目的结构如下:


    项目结构

    项目中还用到了几个第三方框架:


    第三方框架

    接下来,就要开始修改项目名称了。假设我要把doutu改为shopping

    提醒:

    • 在改工程名之前,要注意三件事:一定要备份,一定要备份,一定要备份。
    • 在开始第一步之前,请先执行第八步。

    1.修改project名称

    选中project 单击project名字 或者 选中project+回车。



    修改project的名称之后,回车会有提示:



    这里点击Rename,将project中部分doutu改为shopping
    修改之后,哪些地方有明显变化呢?


    Rename后

    2.修改文件夹名称

    选中文件夹 单击文件夹名字 或者 选中文件夹 回车


    修改文件夹

    修改之后,回车是这样的:


    修改文件夹名字后

    虽然在Xcode 里文件夹的名字修改了,但是实际上文件夹里的名字还是没有修改,我们需要去真实文件夹里再修改一次。


    修改真实目录名称

    3.修改工程中文件夹的路径

    在上一步修改玩真实文件夹的名字后,工程中所有的类都变成了红色(文件找不到)。如下图所示:


    主要是因为工程中的文件夹指引的路径不对。


    按照如上步骤所示,找到我们刚才修改的真实shopping文件夹,点击Chose 即可。
    这时候,因为文件夹关联的真实文件夹路径正确了,所有红色的文件都正常了。
    这是修改后的样子:


    修改后

    4.全局搜索

    全局搜索doutu,搜索结果如下:


    7266902F-751B-42BE-BF13-FF84EB5E96BB.png

    接下来是将doutu替换为shopping


    DB9337FB-35A2-4509-84EB-BDF17C9BEA8C.png

    点击Replace All之后,大部分doutu都会被替换为shopping,但是还是有一些顽固的残留。


    替换后

    可以看出,这个是project 文件中,我的第三方框架的framework Search Paths 和Library Search Paths 的路径错误。即:


    这里只需要将doutu 修改为 shopping即可。
    怎么修改呢?
    有两种方式,第一种双击framework Search PathsLibrary Search Paths 后面的值,然后单独修改每个值。


    双击修改

    第二种方案,先将framework Search PathsLibrary Search Paths中的值都删掉,然后把第三方删除,再重新添加。


    Paste_Image.png

    这里点击Remove References删除,然后再把Vendor文件夹添加进工程即可。

    5.修改pch文件路径

    如果你的工程里添加了pch文件,因为修改了文件夹,project名字,所以pch文件夹路径也要修改。修改前编译运行,会报如下错误:


    pch文件找不到

    在Build Settings 中搜索Prefix,修改Prefix Header 的值。


    上面把doutu/shopping-Prefix.pch修改为shopping/shopping-Prefix.pch即可。

    6.修改info.plist文件路径

    此时再次编译运行,依然会有一个错误,错误如下:


    然后依然去 Build Setting 中搜索info.plist。


    上面将doutu/Info.plist修改为shopping/Info.plist即可。

    到这里,工程应该已经可以正常运行了。


    Buid Succeeded

    但是,如果你想追求完美,依然还有两个地方需要修改。

    7.修改scheme 值

    要修改的其实是这个地方的显示名称:


    怎么修改呢?
    点击scheme值,然后选择 Manage Schemes...


    接下来会进入到一个弹出窗口,选中一行,点击scheme值或者 回车


    这里把doutu 修改为 shopping就会看到 scheme 变成了shopping,如下图所示:


    Paste_Image.png

    8.修改大文件夹的名称

    其实这一步,应该在拷贝完工程后,直接修改的。所以这一步更应该放在第一步做。


    修改大文件夹的名称

    到这里,就真的大功告成啦。Have Fun!



    文/Haley_Wong(简书作者)
    原文链接:http://www.jianshu.com/p/bf151d0420ce
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
    展开全文
  • iOS 一个工程实现多个Target

    千次阅读 2018-06-27 14:45:39
    我们公司的项目需要涉及多地市,大部分功能是一样的,但是每个地市又有自己的特色,最基本的就是App的icon和LaunchImage的不同,这样讲大家应该会明白··· 用到多个target其实还有很多场景,比如美团的买家和卖家...

    我们公司的项目需要涉及多地市,大部分功能是一样的,但是每个地市又有自己的特色,最基本的就是App的icon和LaunchImage的不同,这样讲大家应该会明白···

    用到多个target其实还有很多场景,比如美团的买家和卖家端,滴滴的乘客和司机端,boss直聘的牛人和招聘端,都可以用这样的方法实现,不仅节省了很多时间,还提高了开发效率···

    Demo地址:点击打开链接

    接下来,我就从一个Demo给大家详细分析一下···

    1.创建Project

    首先,我们需要像往常一样创建一个project,


    我起的名字叫Multi-TargetDemo,如下图:


    2.新建一个target


    选中Single View Application


    和project一样起个名字


    完成之后我们可以看到


    3.将共同的功能实现在Multi-TargetDemo中,Target2具有自己的特色。

    需求是Multi-TargetDemo实现view是红色的,Target2实现view是蓝色的简单功能。


    首先要做的就是AppDelegate关联Taget2


    其次就是给Target2的AppDelegate中的AppDelegate改个名字并继承与AppDelegate,实现父类的初始化方法~




    此时我们基本上是完成了关联。

    那我们如何区分两个Target?

    4.区分Target的小技巧

    这个地方我写错了,Debug和Release都需要定义,否则生产的时候就会报错!


    如何使用?


    运行不同的Target,出来不同效果,


    就ok了~

    如有不足,请朋友指正!谢谢!


    展开全文
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

    在简单的app中,可能只会用到工程,但是项目越大,越复杂,就会需要拆分项目,将各个功能拆散到各个工程中。

    可以使用worksapce来管理工程集合。

    但是资源文件却不好管理,因为xcode默认只能添加自己工程内,或者子工程的资源文件到target中。

    如果是平级的工程,怎么添加呢?可以使用bundle

    bundle虽然是os x中的资源类型,但是是兼容iOS的

    我们可以先创建一个os x的bundle,然后修改其编译类型为iOS的

    调整base sdk即可

    然后添加资源文件(png,xib,storyboard等)到此bundle中。

    虽然资源文件打包到了bundle中,但是此bundle无法加入到其他工程编译的target中

    我们需要修改scheme

    Edit Scheme-》Build-》Add this bundle

    这样在编译其他target的时候就会自动编译此bundle了,但是这个bundle却不会打包到app中

    我们还需要添加run script到build parses中

    build parses-》add run script(点+号)

    cp -R -f $BUILT_PRODUCTS_DIR/MyBundleName.bundle $BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH/

    如果有多个bundle

    cp -R -f $BUILT_PRODUCTS_DIR/*.bundle $BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH/

    这样bundle就可以正常打包到app中了

    在使用的时候需要指定bundle

    [UIImage imageNamed:@"yourbundlefile.bundle/imageInBundle"];



    转载于:https://my.oschina.net/u/811205/blog/294278

    展开全文
  • iOS 工程规范

    千次阅读 2019-07-23 11:19:40
    之前为公司定了一个内部的 iOS 工程规范,其实也是我个人的风格,下面记录一下发出来。

    之前为公司定了一个内部的 iOS 工程规范,其实也是我个人的风格,下面记录一下发出来。

    Xcode 工程结构

    注意事项

    1. 工程命名应该和项目一致,遵循 UpperCamelCase 写法(第一个词的首字母,以及后面每个词的首字母都大写,除了 iOS 的 i 这种),禁用中文。
    2. 为了避免文件杂乱,物理文件应该保持和 Xcode 项目文件同步。Xcode 创建的任何组(group)都必须在文件系统有相应的映射。
    3. 工程文件里不能记录某些账号和密码。
    4. 尽量不要有 warning: 类似数据类型隐式转换这种低级的 warning 绝不能出现。类似 perform unrecognizer selector 这种 warning 可以用 #pragma clang diagnostic push 这种编译指令将其去掉(所有 warning 参见 fuckingclangwarnings.com)。对于 CocoaPods 安装第三方库带来的 warning 可以在 Podfile 中配置 inhibit_all_warnings! 去掉。对于开发者自己打的 warning ,在发布版本之前要逐个检查,确认无误或者完成后才能发布。
    5. 工程必须要有 README.mdCHANGELOG.md ,建议每个代码文件夹写一个 README.md 说明该模块是做什么的,起到文档作用。
    6. 工程中每个自己新建的文件都必须带有前缀标识,前缀标识必须全局一致,全部字母大写。

    App 工程结构(目前仅适用于 Objective-C 工程,传统的 MVC 架构)

    两种建议(假设下面的工程以 DMP 为前缀):

    第一种是先按代码逻辑划分,再在每个目录中按功能模块细分:

    |—— DemoProject
    |	|—— Common: 存放全局通用的头文件,例如 DMPConstants.h, DMPAppKeys.h, DMPMacros.h
    |	|—— Vendor: 不适合通过 CocoaPods 引入的第三方类库,例如需要经常改动的或者自己定制的
    |	|—— Resources: 存放各种资源,例如语言国际化文件组成的 bundle 文件,Images.xcassets 等
    |	|—— Utils: 工具类,可以便捷地迁移到其它工程
    |	|	|—— Categories: 存放各种 Category
    |	|	|—— Helpers: 例如获取设备信息、App 信息之类的工具类
    |	|—— Models: 数据模型类
    |	|—— Logic: 各种业务逻辑类
    |	|	|—— Global: 例如 App Config,Notification Center 这种全局通用的
    |	|	|—— SDKWrapper: 为了避免 AppDelegate.m 过于庞大,可以把一些 SDK 逻辑封装下单独出一个类
    |	|	|—— Network: 网络逻辑
    |	|	|—— Storage: 数据持久化
    |	|	|—— Cache: 缓存
    |	|	|—— 其它根据工程自行拓展
    |	|—— Views: 视图类
    |	|	|—— Common: 所有全局共用的 UI 组件
    |	|	|—— TableView:
    |	|	|	|—— Headers: UITableView 的 Headers
    |	|	|	|—— Cells: UITableViewCell 子类
    |	|	|	|—— Footers: UITableView 的 Footers
    |	|	|—— CollectionView:
    |	|	|	|—— ReusableViews: UICollectionReusableView 子类
    |	|	|	|—— Cells: UICollectionViewCell 子类
    |	|	|—— Storyboards: 存放一个或多个 storyboard 文件
    |	|	|—— Others: 针对特定场景定制的 UI 组件,根据功能划分模块,例如 Login, Home, My
    |	|—— Controllers: 视图控制器类
    |	|	|—— Base: 各种 ViewController 的根类,例如 DMPBaseViewController, DMPBaseTableViewController
    |	|	|—— Entrance: 存放各种 App 启动时的入口页面控制器,例如配置入口的 DMPControllersManager, 闪屏 DMPSplashController, 引导页 DMPIntroduceController, 正常入口 DMPRootTabBarController 等
    |	|	|—— 根据功能划分模块,例如 Login, Home, My
    |	|—— AppDelegate.h/m
    |	|—— Supporting Files
    |	|	|—— Info.plist, main.m, pch 等
    |—— DemoProjectUnitTests: 单元测试对应的目录
    |—— Scripts: 在 Archive 时自动保存 dSYM 文件的脚本,读取 dSYM 和 Crash 的脚本等,不用添加到 Xcode 工程中
    |	|—— dSYM: 存放每次 Archive 生成的 dSYM
    

    第二种是先按功能模块划分,再按代码逻辑划分:

    假设有 Entrance, Home, Games, My 几个功能模块,分别表示程序入口,主页,游戏页面,个人主页。

    |—— DemoProject
    |	|—— Vendor: 不适合通过 CocoaPods 引入的第三方类库,例如需要经常改动的或者自己定制的
    |	|—— Resources: 存放各种资源,例如语言国际化文件组成的 bundle 文件,Images.xcassets 等
    |	|—— Base: 基础模块,为具体功能模块做支撑
    |	|	|—— Common: 存放全局通用的头文件,例如 DMPConstants.h, DMPAppKeys.h, DMPMacros.h
    |	|	|—— Models: 数据模型类
    |	|	|—— Views: 全局通用的视图类,自定的 UI 组件祖先类放在这里
    |	|	|—— Controllers: 各种 ViewController 的根类,例如 DMPBaseViewController, DMPBaseTableViewController
    |	|	|—— Helpers: 便于迁移到其它工程的工具类
    |	|	|—— Categories: 各种 Category
    |	|	|—— Logic: 负责各种基础逻辑的类
    |	|	|	|—— Global: 例如 App Config,Notification Center 这种全局通用的
    |	|	|	|—— SDKWrapper: 为了避免 AppDelegate.m 过于庞大,可以把一些 SDK 逻辑封装下单独出一个类
    |	|	|	|—— Network: 网络逻辑
    |	|	|	|—— Storage: 数据持久化
    |	|	|	|—— Cache: 缓存
    |	|	|	|—— 其它根据工程自行拓展
    |	|—— Modules: 各种功能模块
    |	|	|—— Entrance: App 入口模块
    |	|	|	|—— Interfaces: 本模块公用的头文件,例如一些公用的常数、宏、Protocol、enum 定义等
    |	|	|	|—— Models: 本模块用到的数据模型类
    |	|	|	|—— Views: 本模块涉及的页面类
    |	|	|	|—— Controllers: 本模块涉及的视图控制器类
    |	|	|	|—— Helpers: 本模块涉及的业务逻辑类,例如负责布局的 LayoutUtil,负责动画的 AnimationUtil
    |	|	|—— Home: 主页模块
    |	|	|	|—— ... 
    |	|	|—— Games: 游戏模块
    |	|	|	|—— ...
    |	|	|—— My: 个人主页模块
    |	|	|	|—— ...
    |	|—— AppDelegate.h/m
    |	|—— Supporting Files
    |	|	|—— Info.plist, main.m, pch 等
    |—— DemoProjectUnitTests: 单元测试对应的目录
    |—— Scripts: 在 Archive 时自动保存 dSYM 文件的脚本,读取 dSYM 和 Crash 的脚本等,不用添加到 Xcode 工程中
    |	|—— dSYM: 存放每次 Archive 生成的 dSYM
    

    两种各有优缺点,可以自行根据喜好选择合适的结构。

    在 Build Settings 中设置 Enable Modules 和 Link Frameworks Automatically 为 YES,避免手动引入各种系统 frameworks.

    图片资源管理

    App 尽量使用 Images.xcassets 进行管理,必须包含 @2x 和 @3x 文件,较大的图片或背景图片可以使用 JPEG 格式代替。

    图片文件命名采用 prefix_module_identifier_state 规则。

    prefix 表示图片类型的前缀,举例:

    • icon
    • btn
    • bg
    • line
    • logo
    • pic
    • img

    module 表示所属的场景模块,例如:common, home, my 等。

    identifier 表示图片的标识。

    state 表示素材的状态,例如按钮处于正常状态还是选中状态。

    举例:icon_common_setting, btn_home_play_selected.

    依赖管理

    App 统一使用 CocoaPods 进行第三方依赖管理, SDK 尽量避免引入第三方类库。

    Podfile 示例:

    platform :ios, '7.0' # 指定 App 最低版本
    
    # Target for App
    target "H5GameCenter" do
        
        pod 'AFNetworking', '~> 2.6.0' # 需要指定版本号
    
        inhibit_all_warnings! # 禁止所有 warnings
        
    end
    
    # Target for Unit Tests
    target "HGCUnitTests" do
    
        pod 'OHHTTPStubs', '~> 4.3.0'
        
        inhibit_all_warnings!
        
    end
    

    小提示:如果每次都用 pod install 命令安装,会非常慢,因为 CocoaPods 会检测类库是否需要更新,可以使用 pod install --no-repo-update 绕过检测更新进行安装。

    代码管理

    1.分支管理统一用 git flow

    2.Objective-C 工程 .gitignore 规范

    # Xcode
    #
    # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
    
    ## Build generated
    build/
    DerivedData/
    
    ## Various settings
    *.pbxuser
    !default.pbxuser
    *.mode1v3
    !default.mode1v3
    *.mode2v3
    !default.mode2v3
    *.perspectivev3
    !default.perspectivev3
    xcuserdata/
    
    ## Other
    *.moved-aside
    *.xccheckout
    *.xcscmblueprint
    
    ## Obj-C/Swift specific
    *.hmap
    *.ipa
    
    # CocoaPods
    #
    # We recommend against adding the Pods directory to your .gitignore. However
    # you should judge for yourself, the pros and cons are mentioned at:
    # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
    #
    # Pods/
    
    # Carthage
    #
    # Add this line if you want to avoid checking in source code from Carthage dependencies.
    # Carthage/Checkouts
    
    Carthage/Build
    
    # fastlane
    #
    # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 
    # screenshots whenever they are needed.
    # For more information about the recommended setup visit:
    # https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md
    
    fastlane/report.xml
    fastlane/screenshots
    

    3.commit message 不能太随意

    测试

    对关键的逻辑必须要有单元测试。

    Code Review

    暂无。

    展开全文
  • iOS工程结构

    千次阅读 2014-10-01 22:13:47
    从2011年底开始学习iOS开发,到现在也已经快3年了,虽然中途没有一直进行iOS的开发(总是在Android和iOS间切换),但始终没有离开,而我现在的工作也一样,在iOS和Android间来回游走,正如我博客的slogan一样,“In ...
  • 教新手们如何一步步创建iOS工程

    千次阅读 2017-02-20 21:44:35
    好久没有写iOS技术文章了,因为这段时间大部分都花在网站开发、后台开发、微信开发等方面上了。在这里先挂个广告,标哥承接网站开发、app开发、微信...本篇文章教大家一步步创建好iOS工程,配置好相关第三方库!
  • 一个ios工程师必须具备的八大知识技能点  随着移动互联网的高速发展泄洪而来,有意学习移动开发的人越来越多了,竞争也是越来越大,需要学习的东西很多。如何才能在激烈的移动开发者竞争中一枝独秀,...
  • iOS 工程命名规则

    千次阅读 2015-02-26 13:43:44
    iOS 工程命名规则
  • 在开始之前,请务必先保存您的工程。由于 Unity 无法直接生成 ipa 文件,您需要先导出 iOS 工程文件,然后通过 Xcode 编译生成。
  • Unity导出ios工程如何减小运行内存、安装包(ipa)、以及安装后大小(概说) 最近项目遇到些问题,就是因为项目里面彩色图片素材比较多,尺寸也比较大,制作人还不接受把压缩图片质量降低很明显。于是导致unity导出...
  • 简历·周凌宇·iOS工程师

    千次阅读 2017-08-04 14:12:05
    简历·周凌宇 基本资料 邮箱:coderfish@163.com ... 应聘职位:iOS 工程师 开发经验:两年 教育背景:本科|安庆师范大学 | 计算机与信息学院 | 物联网工程专业 | 2016 届 技能 熟练掌握 Obj
  • 如何在Xcode上彻底修改iOS工程

    万次阅读 2017-12-18 20:45:46
    本文针对于彻底修改iOS工程名,不需要另外建工程,会整理的完全一样。
  • Unity编译iOS工程的自动化配置
  • 猿学~iOS 工程师应该掌握哪些技能?

    千次阅读 2019-06-18 16:04:16
    iOS 工程师应该掌握哪些技能才算得上一位合格的iOS工程师呢?  Objective-C Objective-C语言基础 library,framework的制作 Runtime 编程 LLVM 原理和调优  操作系统 iOS内存管理和调优 iOS的文件系统和...
  • 一行命令统计iOS工程代码总行数

    千次阅读 2016-04-09 19:23:28
    一行终端命令统计iOS工程代码总行数的快捷方法
  • 清除ios工程里未使用的图片

    千次阅读 2015-01-07 09:39:22
    一个ios工程经过多次改版之后,往往有很多废弃的图片没有清理掉,如果清理掉这些图片就可以让ipa包的体积大大减小。 我做的项目里有700多张图片,其中没用到的就有200多张,所以清理图片还是很有必要的。
  • iOS工程中删除默认的并使用自建的ViewController后黑屏 现象 往往我们新建一个iOS工程后,会使用自定义的ViewController,而不是其自带的。作为第一次使用iOS开发的人来说,就会遇到一个问题,app启动后黑屏,并...
  • 利用cmake 编译iOS工程

    2020-02-17 18:25:21
    本文主要介绍如何生成iOS工程。 首先需要cmake自身能够成功编译 保存以下脚本,放到cmake文件同目录下执行,就能生成xcode工程,不过为mac工程 #!/bin/bash # Build program with release mode. BUILD_DIR=bu...
  • 小伙伴们是否因为新建工程的时候随意写的名字有的可能还是以中文命名的,想上传到github的时候感觉被别人看到low爆了,这时候就需要我们去改掉整个工程的名字。为什么说是完整重命名呢,那就是你以后再也不会看到...
  • 本次更新V1.4.4(2020年01月31日) 1.适配cocos2d项目; 2.优化类名混淆重名问题; 3.优化代码和项目结构; ...----------------------------------------分割线-------------------------------------...
1 2 3 4 5 ... 20
收藏数 143,933
精华内容 57,573
关键字:

ios工程