秃萝卜的技术博客

A iOS Developer Newer

欢迎来到我的技术博客,我是秃萝卜(@Tuluobo),一名 iOS 开发菜鸟。


希望能在 iOS 开发的道路上越走越远,拥有自己开发的千万级用户的 App 。

从认识 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....... - LanguagePrecompile Prefix Header 设置为YES

Build Settings....... - LanguagePrefix 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文件。我将在后面继续更新。

最近的文章

UIApplication 和 AppDelegate

每一个 iOS 应用都具有的两个类,他们是一个 iOS App 的灵魂支撑。今天总结一下 UIApplication 和 AppDelegate。UIApplicationUIApplication 对象是应用程序的象征。每一个应用都有自己的UIApplication对象,而且是单例的。可以通过[UIApplication sharedApplication] 可以获得这个单例对象。一个iOS程序启动后创建的第一个对象是UIApplication对象,使用UIApplication对象,能...…

iosUIApplicationdelegate继续阅读
更早的文章

面试中的计算机网络

引言计算机网络是CS基础中的一门重要课程,作为一名开发人员,网络通信也是开发中很重要的组成部分,所以计算机网络在面试中是必考的。在最近的面试中,我也被多次问道计算机网络方面的知识,特别是TCP协议的连接与关闭,必须要清楚掌握。那么现在废话不多说,下面是我自己复习计算机网络重点知识的笔记,不全面,主要是从OSI七层模型说起。OSI 模型物理层:主要任务是将比特流与电子信号进行转换。(方便在物理介质中传递)。数据链路层:定义了通过通信介质相互连接的设置之间,数据传输的规范。(传递的是帧),通信...…

网络iptcp三次握手继续阅读