2015.12.31 iOS程序准备(developer.apple.com)

?程序启动的过程
    .在桌面找到相应的应用的图标 点击图标
    .main函数

?UIApplication类
  Every app has exactly one instance of UIApplication
  每个应用程序都只有一个UIApplication类的实例对象
  运行起来的应用程序就是一个UIApplication对象。

?UIApplicationMain
  创建UIAppication对象的一个单例对象(singleton)

  The role of your app’s application object
  .handle the initial routing of incoming user events
  处理用户行为的一个循环
  .dispatches action messages forwarded to it by control objects (instances of the UIControl class) to appropriate target objects.
  将特定的行为分配给特定的目标对象(将不同的事件传递给不同的UI控件)

?Tasks
  Getting the App Instance:获取单例对象
  Getting the App Delegate:获取应用程序代理(捕获程序的状态)
  Getting App Windows:获取窗口
  Controlling and Handling Events:处理事件
  Opening a URL Resource:打开外部的APP 资源(Safari)
  Configuring the User Notification Setting:配置用户的通知
  Registering for Remote Notifications:远程通知(QQ消息,更新通知)
  Registering for Local Notifications:本地通知(闹钟)
  Managing Background Execution:管理后台的执行
  Managing Home Screen Quick Actions for 3D Touch:快捷方式
  Controlling App Appearance:管理程序的外观(状态栏,网络指示,方向)

  NSStringFromClass将一个类转化为字符串形式
  NSStringFromClass([AppDelegate class])

?UIApplicationDelegate
  The UIApplicationDelegate protocol defines methods that are called by the singleton UIApplication object in response to important events in the lifetime of your app.
  响应程序运行过程中发生的一些重要的事件(程序启动,进入后台,激活,内存吃紧。。)

  The app delegate works alongside the app object to ensure your app interacts properly with the system and with other apps.
  应用程序代理和app共同运行,确保程序与系统或者其他程序之间的交互

  The app delegate is effectively the root object of your app. Like the UIApplication object itself, the app delegate is a singleton object and is always present at runtime.
  应用程序代理是程序的root对象,整个程序运行过程中都一直存在

  App Delegate里面的那些方法应该被实现
  The app delegate performs several crucial roles:
          .It contains your app’s startup code. 
          可以在代理里面使用代码进行设置
          a.程序加载起来调用的第一个方法(配置,注册服务器信息,读取数据,配置界面)
          //还没有运行到内存里面
          - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions NS_AVAILABLE_IOS(6_0);
        
          //加载好了,需要对显示的界面进行配置
          - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions NS_AVAILABLE_IOS(3_0);
        
          It responds to key changes in the state of your app. Specifically, it responds to both temporary interruptions and to changes in the execution state of your app, such as when your app transitions from the foreground to the background. 
          临时打断、状态改变
        
        
          It responds to notifications originating from outside the app, such as remote notifications (also known as push notifications), low-memory warnings, download completion notifications, and more. 
         外部通知(消息推送、内存不够、后台下载完成)
          registerForRemoteNotificationTypes:
        
        It determines whether state preservation and restoration should occur and assists in the preservation and restoration process as needed.
        确定程序的状态(数据)是否应该保存或者恢复
        
          It responds to events that target the app itself and are not specific to your app’s views or view controllers. 
          响应应用程序本身的事件
          application:openURL:options:
        
          You can use it to store your app’s central data objects or any content that does not have an owning view controller.
          保存程序当前的核心数据或其他那些没有viewController保存的数据
    
?UIResponder
  The UIResponder class defines an interface for objects that respond to and handle events.
  定义了对象响应和处理事件的接口
  所有能够处理事件的UI控件都是直接或者间接继承于UIResponder

  两种主要的事件行为:触摸事件和运动事件
  There are two general kinds of events: touch events and motion events. 
?UIEvent
  touchesBegan:withEvent:, 
  touchesMoved:withEvent:, 
  touchesEnded:withEvent:,
  touchesCancelled:withEvent:.

  motionBegan:withEvent:,
  motionEnded:withEvent:, 
    motionCancelled:withEvent:. 
  iOS3.0 canPerformAction:withSender:
  iOS 4.0, UIResponder added the remoteControlReceivedWithEvent: method for handling remote-control events.

?Responder Chain响应者链
  辑视图有层级关系,后添加的视图会覆盖前面的视图,当一个事件发生了。最前面的视图会接收到这个事件,如果这个视图不响应,那么继续将事件传递给后面一层,直到UIWindow,如果都不响应,那么事件将会被丢弃,这个过程中,只要有一个响应了,那么这个事件就停止传递了。

?为什么要使用代理
  为了简化代码逻辑(苹果公司自己设计外观和系统,将制造、材料、销售代理出去,就是为了让自己专注核心模块)
 继承可以完成代理的功能(如果使用继承,相当于苹果公司自己有自己的制造子公司,材料子公司,销售子公司,对于自己的管理加大了难度,并且无法专注核心竞争力)

  整个应用程序只有一个代理(默认系统为我们提供了AppDelegate类)

?UIWindow
  manages and coordinates the views an app displays on a device screen
  管理和协调设备屏幕上面显示的视图
  一个应用程序一般情况下只有一个window

?UIWindow的功能
    .provide an area for displaying its views
    提供一片用来显示视图的区域
    .distribute events to the views.
    分发事件给视图
    .一个UIWindow对象必须设置一个主界面
    设置窗口的rootViewController属性
    .显示窗口
    调用makeKeyAndVisible属性

?UIScreen
    A UIScreen object defines the properties associated with a hardware-based display
    定义一些与基于硬件显示的属性

如何获取设备的主屏幕
    [UIScreen mainScreen]

如何获取一个视图的矩形坐标
    bounds属性

?各种设配的尺寸:
    4(320 * 480)
    5(320 * 568)
    6(375 * 667)
    6p(414 * 736)

时间: 2024-10-11 04:11:41

2015.12.31 iOS程序准备(developer.apple.com)的相关文章

使用VAssistX给文件和函数添加注释-2015.12.31

在Visual Studio使用VAssistX助手可以非常方便的给文件和函数添加注释,增加更多的记录信息,从而方便在时间久后,对代码阅读理解的提示,以及别人后续对代码的维护和BUG修改. 添加头文件注释注释方法: /******************************************************************** //Copyright (C), 2014-2016, Sichuan Qicheng Technology Development Co.,L

iOS: 学习笔记, 值与引用类型(译自: https://developer.apple.com/swift/blog/ Aug 15, 2014 Value and Reference Type

值和引用类型 Value and Reference Types 在Swift中,有两种数据类型. 一是"值类型"(value type), 它是每一个实例都保存有各自的数据,通常定义为struct, enum或tuple. 二是"引用类型"(reference types),它是多实例共享一份数据,这种类型通常定义为class. 在本文中,我们将展示值类型和引用类型各自的优点以及如何在二者之间选择. 它们有什么区别? 最基本的区别是 "值类型"

iOS: 学习笔记, 值与引用类型(译自: https://developer.apple.com/swift/blog/ Aug 15, 2014 Value and Reference Types)

值和引用类型 Value and Reference Types 在Swift中,有两种数据类型. 一是"值类型"(value type), 它是每一个实例都保存有各自的数据,通常定义为struct, enum或tuple. 二是"引用类型"(reference types),它是多实例共享一份数据,这种类型通常定义为class. 在本文中,我们将展示值类型和引用类型各自的优点以及如何在二者之间选择. 它们有什么区别? 最基本的区别是 "值类型"

漫谈iOS程序的证书和签名机制

原文:漫谈iOS程序的证书和签名机制 接触iOS开发半年,曾经也被这个主题坑的摸不着头脑,也在淘宝上买过企业证书签名这些服务,有大神都做了一个全自动的发布打包(不过此大神现在不卖企业证书了),甚是羡慕和崇拜.于是,花了一点时间去研究了一下iOS这套证书和签名机制,并撰文分享给需要的朋友.由于本人才疏学浅,多有遗漏或错误之处,还请大神多多指教. 非对称加密和摘要 非对称加密的特性和用法 非对称加密算法可能是世界上最重要的算法,它是当今电子商务等领域的基石.简而言之,非对称加密就是指加密密钥和解密密

关于iOS程序中插入广告的问题

版权所有,转载请注明出处 陈军刚 对于开发面向全球用户的免费软件,插入Google的Admob广告和Apple的iAd是开发者实现盈利的最好选择.那接下来将介绍一些在iOS程序中插入Google的Admob广告的一些步骤. 第一步:加入ADBannerView 首先,在你的工程中引入iAd.framework ScenicViewController.h 1 #import <UIKit/UIKit.h> 2 #import <iAd/iAd.h> 3 4 @interface S

优化iOS程序性能的25个方法

1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露.它自动为你管理retain和release的过程,所以你就不必去手动干预了.忘掉代码段结尾的release简直像记得吃饭一样简单.而ARC会自动在底层为你做这些工作.除了帮你避免内存泄露,ARC还可以帮你提高性能,它能保证释放掉不再需要的对象的内存. 现在所有的iOS程序都用ARC了,这条可以忽略. 2. 在

程序员必看的书之iOS程序员

前几天发布了一篇程序员必看的书,现在的IT人,程序员们不要一味的敲代码,我们也要有时间为自己充充电,买个kindle,公车,地铁上可以多多看看书.接下来我将为程序员们继续推荐一下比较好书.如果你觉得我推荐的这些书有用,就多看会,如果觉得推荐的不好,那就不要看了,就这么简单.如果你觉得我推荐的书是菜鸟才看的书,那您这位老鸟出门左转.希望给大家带来帮助. Objective-C 2.0程序设计 本书是Objective-C领域的经典著作,对Objective-C进行了系统而全面的阐述,权威性毋庸置疑

ios程序后台运行设置(不是太懂)

文一 我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间. 还有三种类型的可以运行在后以, 1.音乐 2.location 3.voip 文二 在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供特定的服务,用户可以请求后台执行时间,以提供这些服务. 判断是否支持多线程 UIDevice* device = [UIDevice

iOS程序框架设计之皮肤切换功能 (白天与夜间效果)

iOS程序框架设计之皮肤切换功能 一.引言 移动应用的开发中,有时我们会需要例如更换皮肤此类的功能,andorid采用xml配置UI的方式,这个问题或许还容易解决些,iOS的主要UI逻辑则是在代码中控制的,如果没有一个强大的框架方案,这个问题将变得非常棘手.网上也有很多诸如此类功能的优秀案例与框架,在这篇博客中,我与大家分享下我的解决方案,其中如果有不恰或者糟糕之处,希望与高人一起交流. 二.设计思路与框架 首先我的设计思路是采用通知的方式,原理可以如下理解为以下几步: 1.在系统的通知中心注册