iOS成长之路基础篇 – (6) 从认识 XCode 项目开始 iOS 开发

iOS成长之路基础篇 – (6) 从认识 XCode 项目开始 iOS 开发

iOS 开发的官方IDE就是XCode,所以我们要成为一名合格的iOS developer,就要从认识XCode开始,今天,我将总结学习XCode项目开发的一些内容。

xcode6 以后的变化

XCode 6.0 之后变化比较大。与Xcode 5.0 相比较:

  • xcode6 没有 Frameworks 文件夹,自动导入常用到的Framework
  • xcode6 有一个 LaunchScreen.xib 文件,启动界面 xib 文件,但是 xcode5 默认没有。在工程的设置项 GeneralApp Icon and Launch ImagesLaunch Screen Files 中可以设置。

在iOS开发中,我们程序的启动界面决定了可见范围,如果不设置启动界面,默认可视范围为3.5inch 的尺寸,即 iPhone 的尺寸。所以在 xcode6 以后一定要设置启动界面。 – Xcode6 中没有一个 .pch 的文件 ,Xcode5有.pch 文件,此文件将延长编译时间。

我们接下来了解一下XCode中一些重要的非编码的配执行文件,这些文件对于iOS项目开发至关重要。

info.plist 文件

key-value 文件

Bundle name — 软件名称/默认$(PRODUCT_NAME)

Bundle identifier — 软件标识符

Bundle versions string,short — 软件版本号,显示在App Store

Bundle version — 编译版本号

程序中获取info.plist中的一些属性

// 获取当前 App 版本号
// 第一种方式
// 获取info.plist文件路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];

// 1.解析info.plist
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
// 打印所有
NSLog(@"%@", dict);

// 2.获得版本号
NSString *version = [dict objectForKey:@"CFBundleShortVersionString"];
// 打印
NSLog(@"%@", version);

// 第二种方式
NSString *strVersion = [[NSBundle mainBundle].infoDictionary objectForKey:@"CFBundleShortVersionString"];
// 打印
NSLog(@"%@", strVersion);

.PCH 文件的作用

PrefixHeader 文件的命名和工程名称一致。文件里面的内容被工程中的所有文件共用,也就是将项目的一些公共定义或者import放在此文件。

此文件需要提前编译,首先需要配置。

Build Settings — ....... - Language — Precompile Prefix Header 设置为YES

Build Settings — ....... - Language — Prefix Header 填写自己的.pch文件路径 项目名称/项目名称.pch,如果找不到错误,很可能路径写错了。

由于每一个文件都需要拷贝一份.pch文件,所以提前编译需要大量时间,延长编译时间。

作用:

  • 存放一些公用的宏
  • 存放一些公用的头文件
  • 自定义一些日志输出格式(NSLog比较消耗资源)
  // debug 可以打印日志, release不打印日志
  #ifdef DEGUB  // 调试阶段

  // … 表示宏里面的可变参数,__VA__ARGS__ 表示函数的可变参数
  #define TTLog(...)   NSLog(__VA__ARGS__)   

  #else     // 发布阶段

  #define TTLog(...)

  #endif

如果和C/C++进行混合编程,那么.pch文件也会在C/C++文件导入,所以需要注意,在.pch文件需要使用系统宏__OBJC__ 。

  // 只能导入到 objc 文件 
  #ifdef __OBJC__

  // 只可以在Objc文件导入的内容

  #endif

总结

当然还有一些比较重要的文件,或者文件夹,主要是存储一些资源文件或者xib文件。我将在后面继续更新。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注