http://www.cnblogs.com/v2m_/archive/2011/12/08/2281388.html
SDK一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合
1)在 iOS 平台上,大部分应用是不允许在后台运行并连接网络的。在应用没有被运行的时候,只能通过 Apple Push Notification Service (APNs) 把数据发送到终端用户。对于互联网应用,正确高效的使用 APNs 显然非常重要。
2)本地通知和远程推送通知都可以向不在前台运行的应用发送消息,这种消息既可能是即将发生的事件,也可能是服务器的新数据.不管是本地通知还是远程通知,他们在程序界面的显示效果相同,都可能显示为一段警告信息或应用程序图标上的微章.
3)本地通知和远程推送通知的基本目的—不需要应用程序在前台运行,也可以让应用程序能够通知用户某些事情.
4)二者的区别----本地通知由本应用负责调用,只能从当前设备上的iOS发出, 而远程通知由远程服务器上的程序发送到APNS,再由APNS把消息推送至设备上的程序
建议使用极光推送,可以更好的观察用户的留存率。
1、alloc 创建对象,分配空间
2、init (initWithNibName) 初始化对象,初始化数据
3、loadView 从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
4、viewDidLoad 载入完成,可以进行自定义数据以及动态创建其他控件
5、viewWillAppear 视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
6、viewDidAppear 视图已在屏幕上渲染完成
1、viewWillDisappear 视图将被从屏幕上移除之前执行
2、viewDidDisappear 视图已经被从屏幕上移除,用户看不到这个视图了
3、dealloc 视图被销毁,此处需要对你在init和viewDidLoad中创 建的对象进行释放
-(BOOL)application:didFinishLaunchingWithOptions:
** app加载完毕的时候调用
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
应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer)
应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件
Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录。保存相对重要的数据。
tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录。保存不重要的并且大的数据。
Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据
Library/Preference:保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录。该目录由系统管理, 无需我们来管理。通常用来存储一些基本的软件配置信息, 比如记住密码、自动登录等。
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;