iPhone 开发概述

### iPhone开发概述

沙盒机制( sandbox)

  • iOS 中的沙盒机制( Sandbox) 是一种安全体系,它规定了应用程序只能在为该应用程序创建的文件夹内读取文件,不可以访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件等。
  • 每一个应用程序都在自己的沙盒内
  • 不能随意跨越自己的沙盒去访问别人的沙盒的内容
  • 应用程序向外请求或者接收数据都需要经过权限认证

应用程序的五种状态

  • Not runing( 未运行) 程序没启动
  • Inactive (未激活) 程序在前台运行,不过没有接收到事件.在没有事件处理情况下程序通常停留在这个状态
  • Active (激活) 程序在前台运行而且接收到了事件.这也是前台的一个正常的模式
  • Background (后台) 程序在后台而且能执行代码,大多数程序进入这个状态后会在这个状态上停留一会. 时间到了之后会进入挂起状态( Suspended). 有的程序经过特殊的请求后可以长期处于 Background 状态.
  • Suspended (挂起) 程序在后台不能执行代码.系统会自动把程序变成这个状态而且不会再发出通知.当挂起时,程序还是停留在内存中的,当程序内存

应用状态的生命周期

iOS 加载 app 将要结束时并且 app 程序差不多已经准备好运行的时候会调用这个方法,通常我们需要使用这个方法来完成 app 的初始化和最后设置的一些微调.这个方法调用发生在 app 的 window 和 UI 之前.

- (BOOL)application:(UIApplication *)application didFinishLanunchingWithOption:(NSDictionary *)LaunchOptions

当应用程序将要进入非活动状态执行,在此期间,应用程序不接受消息或事件,比如说来电话了、锁屏。通常在这个方法里实现: 停止 timer 和其他周期性的任务、停止任何正在运行的请求、暂停视频的播放、如果是游戏就暂停它、减少OpenGL ES的帧率、刮起任何分发的队列和不重要的操作队列(你可以处理网络请求或者其他时间敏感的后台任务).

- (void)appliWillResignActive:(UIApplication *)application

当应用进入活动状态执行,这个状态刚好和上面的那个方法相反,需要实现任务的重新开始,比如说重新开始 timer, 继续分发队列,提高 OpenGL ES 的帧率.不过游戏要回到暂停状态,不能自动开始.

- (void)applicationDidBecamActive:(UIApplication *)appliction

当程序被推送到后台的时候调用.所以要设置后台继续运行,则在这个函数里面设置即可.在这个方法需要实现:保存用户数据或状态信息,所有没有写到磁盘的文件或信息,在进汝后台时,最后都写到磁盘去,因为程序可能在后台被杀死,释放尽可能释放的内存

- (void)applicationDidEnterBackground:(UIApplication *)application

当程序从后台将要程序回到前台时调用,这个刚还与上面的那个方法相反.

- (void)applicationWillEnterForeground(UIApplication *)application

当程序将要退出时被调用通常使用来保存数据和一些退出前的清理工作.这个需要设置 UIApplicationExitsOnSuspend的键值.

- (void)applicationWillTerminate:(UIApplication *)application

main 函数

  • main 函数是程序启动的入口,在 iOS app 中, main 函数的功能被最小化,他的主要工作都交给了 UIKit framework.
# import <UIKit/UIKit.h>

# import "PNAppDelegate.h"

int main(int argc, char * argv[])
{
    @autoreleasepool{
        return UIApplicationMain(argc,argv,nil,NSStringFromClass([PNAppDelegate class]));
    }
}

UIApplicationMain 函数有四个函数,你不需要改变这些参数值,不过我们需要理解这些参数和程序是如何开始的: argc 和 argv 参数包含了系统带过来的启动时间.第三个参数确定了主要应用程序类的名称,这个参数指定为 nil, 这样 UIKit 就会使用默认的 UIApplication 类创建对象.第四个参数是程序自定义的代理类名,这个类负责系统和代码之间的交互.它一般在 Xcode 新建项目是会自动生成.

另外 UIApplicationMain 函数加载了程序主界面的文件.虽然这个函数加载了界面文件,但是没有放到应用程序的 windows 上.

重点理解, UIApplicationMain 的做的三件事:

1.根据第三个参数创建 UIApplication 对象.

2.根据第四个参数创建应用程序的 delegate, 并设置 delegate.

3.设置主事件循环( main event loop) 包括 application 的 run loop, 同时开始处理事件.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-02 23:58:37

iPhone 开发概述的相关文章

Iphone开发之音频101 (第一部分): 文件和数据类型

转载:http://www.raywenderlich.com/zh-hans/20608/iphone开发之音频101-第一部分:-文件和数据类型 在做iphone开发之前,我(ray)对声音格式了解的相当少.我知道一些"wav"和"mp3"声音格式的差异,但是我肯定不能准确地告诉你"AAC"."CAF"是什么格式的声音文件,同时也不知道在MAC上最好的转换音频文件的方法是什么. 我深知,假如你想要成为一名合格的iphone

HealthKit开发快速入门教程之HealthKit开发概述HealthKit简介

?HealthKit开发快速入门教程之HealthKit开发概述简介? 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为"Healthkit".本章将主要讲解HealthKit的特点.经典应用以及在开发HealthKit时的准备工作. HealthKit简介 HealthKit就是可以收集和分析用户的健康数据移动应用平台.本节将主要讲解HealthKit的特点.经典应用. HealthKit特点 本小节将主要

HealthKit开发快速入门教程之HealthKit开发概述简介

HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为“Healthkit”.本章将主要讲解HealthKit的特点.经典应用以及在开发HealthKit时的准备工作. HealthKit简介 HealthKit就是可以收集和分析用户的健康数据移动应用平台.本节将主要讲解HealthKit的特点.经典应用. HealthKit特点 本小节将主要讲解Healt

深入理解iPhone数据持久化(手把手教你iphone开发 – 基础篇)

在所有的移动开发平台数据持久化都是很重要的部分:在j2me中是rms或保存在应用程序的目录中,在symbian中可以保存在相应的磁盘目录中和数据库中.symbian中因为权限认证的原因,在3rd上大多数只能访问应用程序的private目录或其它系统共享目录.在iphone中,apple博采众长,提供了多种数据持久化的方法,下面笔者会逐个进行详细的讲解. iphone提供的数据持久化的方法,从数据保存的方式上讲可以分为三大部分:属性列表.对象归档.嵌入式数据库(SQLite3).其他方法. 一.属

Android系统移植与驱动开发概述读书心得

第一章是Android系统移植与驱动开发概述,包含了Android系统架构.Android系统移植的主要工作.查看Linux内核版本.Linux内核版本号的定义规则.如何学习Linux驱动开发以及Linux设备驱动等六方面内容 Android系统架构分为四层,分别是Linux内核.C/C++代码库.Android SDK API和应用程序.Linux内核这一层主要包括Linux的驱动程序以及内存管理.进程管理.电源管理等程序. Android移植可分为两部分:应用移植和系统移植.应用移植是指将应

iOS/iphone开发如何为苹果开发者帐号APPID续费

原文地址:iOS/iphone开发如何为苹果开发者帐号APPID续费作者:陈双超_群雄 其实相当的简单,这篇内容是给财务看的,有的地方连我自己看了都感觉有点...但如果不详细,她又要为难我,所以我就当她0智商 1.     打开 https://developer.apple.com/account/overview.action 2.(如何查看到自己的证书哪天到期,就是具体日起,这个的话平时是看不到的只有在最后60天的时候会提醒你.) 3.4.5.6.7.为了避免财务输入麻烦或者她输入出错引起

iPhone开发常问的十个问题

iPhone开发常问的十个问题 前言 今天去stackoverflow.com上看了一下iPhone标签下排名最高的10个问题,将它们整理出来,希望这些常见问题能帮到一些iPhone开发的初学者.本来想把答案也翻译过来的,后来发现答案资料通常都比较复杂,翻译起来太麻烦.所以大家还是看英文的答案吧,我只顺带用中文总结一下答案. 问题一: 有哪些iPhone开发和Objective-C的入门资料 这个确实是最常问的问题了.对于我个人来说,入门时所看的资料主要是<From C++ to Objecti

软件开发概述

                                                                                       (一)软件开发概述 1.1   软件,程序与计算机语言 软件是为完成某些特定功能而编写的一到多个程序文件的集合 计算机是由电子元件组成的. 1.2  程序语言的发展 1.2.1 机器语言 电子元件的特点是他们有两种很稳定的状态:导电或不导电.早期的计算机程序员用0表示计算机不通电的状态,用1表示计算机通电的状态,然后通过集成

iPad和iPhone开发的异同

niPad和iPhone开发的异同 niPad简介 n什么是iPad p一款苹果公司于2010年发布的平板电脑 p定位介于苹果的智能手机iPhone和笔记本电脑产品之间 p跟iPhone一样,搭载的是iOS操作系统 niPhone和iPad niPhone是手机,iPad.iPad Mini是平板电脑 n niPhone和iPad开发的区别 p屏幕的尺寸 \分辨率 pUI元素的排布 \设计 p键盘 pAPI p屏幕方向的支持 p… … n n屏幕的尺寸 \分辨率 n在iOS开发中,只需要关注以下