OC项目新建

1.1 新建一个项目

很久没有新项目从头开始做了,  新建一个项目操作都淡忘了, 这里回忆一下.

测试平台: macOS 10.15.1, Xcode 11.2.1(11B500), 早期的操作与现在的操作基本大同小异, 可以融汇贯通.

选择 iOS > Application > Single View App > Next

$ Product Name: 项目名(可以根据需求取名, 安装到手机上的产品名称基于它, 但两者无必然关系, 产品名可以自定义), 这里使用Demo作为项目名

$ Team: 选择已经登录的开发者账号

$ Organization Identifier: 一般是域名倒过来(新浪就是com.sina, 百度就是com.baidu), 因为域名是唯一的

$ Bundle Identifier: 包名, 自动生成(由Organization Identifier + Product Name构成), 由于域名的唯一性, 就可以保证在同一公司内, 产品的包名不会重复.

$ Language: 开发语言, Swift跟Objective-C, 因为他们可以混编, 那么也就是说两者皆可, 但是还是优先选择你自己主打的开发语言

$ User Interface: 就一个选项, Storyboard.

1.1.2 基本配置

在新建的项目中, 有很多文件, 分四组, Demo, DemoTests, DemoUITests, Products

先将注意力集中在Demo文件夹上, 它里面有

$ AppDelegate 见名知义

$ SceneDelegate, 这词读/si:n/森~音, 不是塞尼, 也不是正弦函数sin, 他是iOS13出来的东东, 也是第二步再讨论, 先让我们把第一步慢慢走好, 所以删掉它!

$ ViewController, 演示要用, 暂时不删, 实际上商业项目中它都是要被删掉的.

$ main.storyboard, 由于我习惯代码构建项目基础, 这个基本上不用, 所以, 我习惯删掉, 当然也不是一删了之, 删掉后有一些操作要做, 不然项目跑不起来.

$ Assets.xcassets, 管理app图标, 启动页等等项目级图片

$ LaunchScreen.storyboard, 暂时先不要删, 这里不聊如何代码控制LaunchScreen(放广告), 而且没有它影响后面我要用到的[UIScreen mainScrren].bounds值.

$ info.plist, 项目中要用到的基本配置信息都在这里

$ main.m, 项目启动入口文件, 它之所以是项目入口, 不是因为它文件名叫mian, 而是它里面有一个叫main的函数, 这个才是一个程序的入口函数(C语言程序,

      或者base on C语言的程序(例如: OC), 入口函数都是main), 学C语言的小老板们都门清, 至于包含main函数的文件名并不重要.

配置:

1.1.2.1, 在工程下新建一个Group, 取名: Supporting Files, 这个在以前的版本中默认是有的, 不知从几时起, 被取消了.

  那么这个Group用于放什么呢? 

  放工程里最初始的资源文件, 

  $ Assets.xcassets

  $ info.plist

  $ main.m

  在做一个商业级项目时, 不管其规模如何, 都应该把工程做好分组, 方便自己, 也方便他人后续的扩展, 维护. 

  第一级,

    比如微信, 四大基础模块"微信", "通讯录", "发现", "我"

    那么最起码分4个Group, 可能还有几个工程级公用模块, 比如数据持久化模块, 网络接口模块, 工具模块, 根据需求也可以跟产品基础模块平级

  第二级,

    在第一级的内部, 再根据设计模式来分, 比如mvc, 就分3个group, Controllers, Views, Models

    

1.1.2.2, 文件配置

前面在1.1.2里面, 我是把很多文件给直接删掉了, 那么不出奇迹, 此时的工程是跑不起来的(或者跑起来立马就crash)

@1 如上图所示, 在工程中找到Build Settings > Packaging > Info.plist File, 修正他的路径值

  这里需要特别说明, 我们在工程里面新建Group的时候, 有两种选项, 

  $ New Group: 创建新的Group, 同时在工程目录中创建对应的文件夹, 那么其内部的文件相对来说路径值已经改变, 

  $ New Group without folder: 只在工程中创建Group, 但不生成对应的文件夹, 它仅仅表示一种逻辑关系, 路径值并没有变

  那么, 刚才我新建了Supporting Files, 同时工程内部也存在对应的文件夹, 那么我把info.plist拖进去以后, 它的路径就由/Test/info.plist变成了/Test/Supporting Files/info.plist

@2 由于我删除了main.storyboard, 那么在工程General选项卡里找到它删除(如果Launch.storyboard被删掉了, 也要找到他的配置项删除其值)

还有在info.plist文件中 Application Scene Manifest配置以及他的子配置都可以删除.

  

 @3 我们没有使用到SceneDelegate, 那么关于它的都可以删除, 包括上图中info.plist中Application Scene Manifest配置项整体删除, 关于SceneDelegate后续在聊

还有AppDelegate.m中也有关于SceneDelegate的代码, 统统删掉

@4 配置rootViewController, 因为我们这里是测试, 就不搞那么复杂, 直接用工程自带的那个ViewController

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CGRect frame = [UIScreen mainScreen].bounds;

    UIWindow *window = [[UIWindow alloc] initWithFrame:frame];

    window.rootViewController = [[ViewController alloc] init];

    [window makeKeyAndVisible];

    self.window = window;

    return YES;

}

如果发现LaunchScreen.stroyboard误删除了, 那么[UIScreen mainScreen].bounds;获取到的值就不够准确, 如果LaunchScreen.storyboard并没有删除, 但是发现获取的屏幕尺寸依然不准, 可以检查info.plist, 是否有一项"Launch screen interface file base name", 它的值是"LaunchScreen.storyboard", 如果没有, 或者值错误, 请自行纠正.

猜你喜欢

转载自www.cnblogs.com/penfree/p/11994746.html