1.Supporting files内有一个Xxx-Info.plist文件(旧版本Xcode的配置文件叫Info.plist)。因此自定义的plist不要带Info关键词。

这个plist是系统的全局配置,不能删除。

Bundle display name是软件的名称,需要注意的是修改完软件名称要先Clean工程,然后卸载原来的App再运行。

InfoDictionary version是版本号,用于发布程序,每次更新的版本号必须比原来的大。

Main storyboard file base name是最主要的storyboard,也可以在BuildSettings里面改,其实BuildSettings里面改的就是plist。(真实名称是有CF前缀的)。

Supported interface orientations是旋转方式。

2.pch文件:其中的内容能被项目中的其他源文件共享和访问。

1.因此可以在内部写一些全局的宏,项目中的其他文件不必包含就可使用。

2.如果整个项目都用某个模型,可以在pch中引入这个模型的头文件。

3.可以开启或者关闭全局的日志输出(通过#define定义新的日志输出函数,发布的时候可以让它为空)。

将NSLog重新定义:__VA_ARGS__是代替...的专用写法,注意两侧的双划线。...代表可以传入无数个参数。

#define MyLog(...) NSLog(__VA_ARGS__)

直接通过Xcode运行的代码,系统会自动定义一个叫DEBUG的宏,因此使用条件编译#ifdef #else #endif来设定日志输出:

#ifdef DEBUG  // 调试阶段
#define MyLog(...) NSLog(__VA_ARGS__)
#else // 发布阶段
#define MyLog(...)
#endif

.m文件都定义了一个宏__OBJC__(注意两侧是双划线),因此要只让.m文件引入,可以如下这样写:

#ifdef __OBJC__
#import <...>
#endif

细节:注意将上面的内容全部包含到__OBJC__中,防止非.m文件访问引起错误。

Tip:.c如果import OC的.h文件,可能会引入@开头的关键词,c语言无法识别,就会报错。

InfoPlist.strings和本地化有关(多语言支持)。

程序的入口是main.m。

几个重要对象:

UIApplication是整个应用程序的象征,每个应用都有自己的UIApplication对象,而且是单例的,即唯一的。

要操作按钮图标(如显示右上角的红色),或者提示用户当前正在联网:

第二个属性开启后在顶部的StatusBar会有联网的提示圆圈,第三个属性是设置应用显示在右上角的数字,0表示不显示。

    UIApplication *app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
app.applicationIconBadgeNumber = 1;

openURL方法可以用于访问资源,会通过浏览器访问:

[app openURL:[NSURL URLWithString:@"http://www.baidu.com"]];

不用自己决定是以什么方式打开。

如果把URL的协议头换成tel://可以拨打电话。

协议:sms是发短信,mailto是发邮件,还可以打开其他app(例如另一个app进行授权登陆)。

从iOS7开始,系统提供了两种方式管理Status Bar,可以通过控制器管理(不同控制器可以有不同的状态栏)。通过UIApplication来管理状态栏,一个App只能有一种状态栏。

默认情况下,iOS7+都是通过控制器来控制Status Bar,Application对象有一系列的UIStatusBarXxx属性来设定,但是iOS7+内这写内容是无效的。

可以通过修改Xxx-Info.plist修改:


View controller-based status bar appearance 键值设置为NO即可。

Application管理StatusBar的好处:可以使用setStatusBarHidden方法设置动画。

Tip:中途改变状态栏应该使用Application来控制。

(三十三)Xcode项目的重要工程文件的更多相关文章

  1. xcode项目打不开:incompatible project version问题

    低版本xcode打开高版本xcode项目或库工程的时候就会出现,打不开的问题 解决 1可以重建创建工程,将文件拷贝到新工程 2 相对一,较简单 找到.xcodeproj文件 右键 显示包内容,找到pr ...

  2. 转:xcode项目打不开:incompatible project version问题

    这个是xcode版本对应不上,不一定要修改版本,我们修改记录版本的文件里面的版本号就行了. 低版本xcode打开高版本xcode项目或库工程的时候就会出现,打不开的问题 解决 1可以重建创建工程,将文 ...

  3. Xcode工程文件pbxproj

    Xcode工程文件pbxproj Xcode会去读Project.pbxproj文件,把pbxproj转成plist文件,看起根目录结构 rootObject:指向的是我们的工程对象.(对应一个24个 ...

  4. 【Xcode 4 无法打开 Xcode 5 DP 打开过的工程文件 解决方法】

    试用Xcode 5 DP打开现有工程文件后再用Xcode4打开后 Xcode 4 会进入崩溃模式折腾了几次发现下面的方法可以让工程文件恢复 如果在Xcode5-DP中打开过xib文件需要在侧栏中修改I ...

  5. SVN版本更新后,upData工程之后,Xcode 工程文件打不开解决办法

    svn更新代码后,打开xcode工程文件,会出现  xxx..xcodeproj  cannot be opened becausethe project file cannot be parsed. ...

  6. Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.

    svn更新代码后,打开xcode工程文件,会出现  xxx..xcodeproj  cannot be opened because the project file cannot be parsed ...

  7. NeHe OpenGL教程 第三十三课:TGA文件

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  8. 关于ios项目沙盒中的文件和Xcode项目创建的文件

    //1.1获取在Xcode项目打开的情况下创建的Plist文件 NSString *path = [[NSBundle mainBundle]pathForResource:@"Profes ...

  9. JAVA之旅(三十三)——TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录

    JAVA之旅(三十三)--TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录 我们继续网络编程 一.TCP 说完UDP,我们就来说下我们应该重点掌握的TCP了 TCP传输 Soc ...

随机推荐

  1. JavaScript 流程语句知识脑图

  2. 操作系统内核Hack:(四)内核雏形

    操作系统内核Hack:(四)内核雏形 在本系列的前一篇文章<操作系统内核Hack:(三)BootLoader制作>中,我们制作出了一个两阶段引导BootLoader,并进入了一个内核的空壳 ...

  3. Java程序员的Golang入门指南(上)

    Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis.类Evernote的云笔记leanote等. 1.1 为什么要学习 如 ...

  4. ant编译mysql驱动

    修改驱动源码后需要重新编译构建,由于mysql编译需要两个jdk版本且还需要hibernate4和junit,这里记录下. 安装ant. 配置两个jdk,5和8.并修改build.xml配置,如下: ...

  5. 你知道如何为iOS工程改名吗?

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

  6. 分析MapReduce执行过程+统计单词数例子

    MapReduce 运行的时候,会通过 Mapper 运行的任务读取 HDFS 中的数据文件,然后调用自己的方法,处理数据,最后输出.Reducer 任务会接收 Mapper 任务输出的数据,作为自己 ...

  7. frameset 与frame 设置的技巧

    今天来写点不一样的.如下图: 实现的效果就是原生的类似于导航形式的frameset. frameset 注意: 包含frameset的网页应该只是作为框架而存在,所以不能有body标签. 这个标签可以 ...

  8. 6.QT信号和槽

     新建项目SignalAndSlot项目 编写代码如下: mysignal.h #ifndef MYSIGNAL_H #define MYSIGNAL_H   #include <QObje ...

  9. 【Netty源码分析】Reactor线程模型

    1. 背景 1.1. Java线程模型的演进 1.1.1. 单线程 时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一. 在Java领域当时比 ...

  10. 【Netty源码分析】发送数据过程

    前面两篇博客[Netty源码分析]Netty服务端bind端口过程和[Netty源码分析]客户端connect服务端过程中我们分别介绍了服务端绑定端口和客户端连接到服务端的过程,接下来我们分析一下数据 ...