无限轮播:
http://www.cnblogs.com/v2m_/archive/2011/12/08/2281388.html
1.iPhone SDK (software development kit 软件开发工具包)
SDK一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合
2.推送(在appdelegate中实现)
1)在 iOS 平台上,大部分应用是不允许在后台运行并连接网络的。在应用没有被运行的时候,只能通过 Apple Push Notification Service (APNs) 把数据发送到终端用户。对于互联网应用,正确高效的使用 APNs 显然非常重要。
2)本地通知和远程推送通知都可以向不在前台运行的应用发送消息,这种消息既可能是即将发生的事件,也可能是服务器的新数据.不管是本地通知还是远程通知,他们在程序界面的显示效果相同,都可能显示为一段警告信息或应用程序图标上的微章.
3)本地通知和远程推送通知的基本目的—不需要应用程序在前台运行,也可以让应用程序能够通知用户某些事情.
4)二者的区别----本地通知由本应用负责调用,只能从当前设备上的iOS发出, 而远程通知由远程服务器上的程序发送到APNS,再由APNS把消息推送至设备上的程序
建议使用极光推送,可以更好的观察用户的留存率。
3.控制器的生命周期
当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序
1、alloc 创建对象,分配空间
2、init (initWithNibName) 初始化对象,初始化数据
3、loadView 从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
4、viewDidLoad 载入完成,可以进行自定义数据以及动态创建其他控件
5、viewWillAppear 视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
6、viewDidAppear 视图已在屏幕上渲染完成
当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反
1、viewWillDisappear 视图将被从屏幕上移除之前执行
2、viewDidDisappear 视图已经被从屏幕上移除,用户看不到这个视图了
3、dealloc 视图被销毁,此处需要对你在init和viewDidLoad中创 建的对象进行释放
4.AppDelegate中的若干方法介绍:
-(BOOL)application:didFinishLaunchingWithOptions:
** app加载完毕的时候调用
- (void)applicationWillResignActive:
** app失去焦点的时候调用(失去焦点UI控件就不能正常使用了, 然后app就可以进入后台了) - (void)applicationDidEnterBackground:
** app进入后台的时候调用(app消失不见) - (void)applicationWillEnterForeground:
** app进入前台的时候调用(app显示出来) - (void)applicationWillTerminate:
** app终结, app关闭的时候调用(但一般情况下不会调用).
** 注意: 当一个应用进入后台(休眠)状态下时, 然后再关闭该应用, 并不会调用applicationWillTerminate:方法。
原因: 当应用进入"休眠"状态下的时候是无法接收任何事件的(比如关闭)。但是有些应用在进入后台的时候, 并不休眠(比如"音乐播放器"、"QQ"等。要实现这种效果需要在"info.plist"中增加一个配置: 配置该应用的类型。 )参考:http://www.cnblogs.com/tracy-e/p/3151457.html
5.SVN
SVN 常用命令
CD 到要保存的目录下
svn check URL --用户名 --密码 (从SVN服务器上拷贝代码,只需要做一次)
svn status 查看文件状态
svn add 文件名/. (向SVN中添加文件,.是添加全部)
svn commit -m “注释” (进行操作后要提交)
svn update 更新服务器上最新的代码。
svn resolved 解决冲突后 必须要使用该命令
解决冲突的方法:
1 放弃自己修改的内容,进行revert 操作 ,还原最初的内容,使用update更新到最新版本,在最新版本上进行修改。
2 手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行resolved filename来解除冲突,最后提交。
会生成3 个文件 mine 的版本 ,上一个版本 ,和最新版本 同时SVN 在源文件进行了合并操作,打开源文件,进行修改。
SVN 图形化操作 :connerstone
6.应用沙盒结构分析
应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer)
应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件
Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录。保存相对重要的数据。
tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录。保存不重要的并且大的数据。
Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据
Library/Preference:保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录。该目录由系统管理, 无需我们来管理。通常用来存储一些基本的软件配置信息, 比如记住密码、自动登录等。
7.static的作用
static修饰全局变量:修改的是作用域
- 没有被static修饰的全局变量,能被项目中的任何文件访问,能随处修改,不安全
- 被static修饰的全局变量,只有本文件内部才能访问
static修饰局部变量:修改的是生命周期
1.被static修饰的局部变量,在整个程序运行过程中,都只有一份内存
2.被static修饰的局部变量,并没有改变作用域
延长局部变量的生命周期
可以让局部变量只在创建的那一刻初始化一次
extern int age = 20;
引用一个全局的int类型变量age,不会去创建,只会找到age的内存空间
•-----------------------------------------------------------------------------
const 修饰常量,只有在定义的时候才能赋值,只有一份内存
只有在修饰数值的时候,才和宏的作用相似
示例:static const CGFloat ZYHHeight = 20;
做法1:新建一个const.m文件,利用const修饰变量,在pch文件中用extern引用;
弊端是,如果 常量一多,就比较麻烦,还得注意避免常量名重复
做法2:在pch文件中导入const.h文件,在.h文件中利用extern const 声明变量
配置pch文件:Build Setting-> 搜索“Prefix” -> Prefix Header -> 项目的根路径(不是绝对路径)
const和类型前后调换位置没关系
面试题:
int const age = 10;
const int age = 10; 这两个意义一样
int * const p1;
int const * p2;
const int * p3; 这两个意义一样
错误写法:const * int p4; 一定要先清楚数据类型,才知道将来指针指向哪里
解析:
int * const p1; const修饰的是p1,因此p1不能修改,但是 *p1 = 100; 是可以的;
int const * p2;
const修饰的是(p2),因此p2不能修改,但是p2可以修改的;
问题:
[objc] view plaincopy
1int age = 10;
2int money = 20;
3intint * const p1 = &age;
4int constconst * p2 = &age;
5// 以下哪句代码会编译错误?
6p1 = 99;
7p1 = &money; // 错误
8p2 = 99; // 错误
9p2 = &money;