- 浏览: 28406 次
- 性别:
- 来自: 韶关
最近访客 更多访客>>
文章分类
- 全部博客 (35)
- Hibernate (1)
- java (1)
- Algorithm (2)
- Project Euler (4)
- struts2 (1)
- Java Web (3)
- Design Patterns (0)
- Data Base (1)
- JavaScript (0)
- EveryDay (0)
- Spring (0)
- project (1)
- doc (0)
- ios (13)
- ios小伎俩 (2)
- Body Sensor (1)
- CPP (0)
- sencha touch (0)
- Reading Notes (0)
- Keyword (1)
- UNIX (1)
- Memo (1)
- Project Management (1)
- Work Log (1)
- NodeJs (1)
- Mac OS (1)
- Web (0)
- Computer Vision (0)
最新评论
UIApplication接收事件,UIApplication響應事件(程序生命週期、系統事件)這就意味著通常沒必要對UIApplication進行修改,而只需考慮如何在UIApplicationDelegate中對UIApplication接收到的事件進行處理。處理系統事件需要編寫一個繼承自UIApplicationDelegate接口的類,而UIApplicationDelegate接口提供生命週期函數來處理應用程序以及應用程序的系統事件。應用程序UIApplcation被定義在MainWindow.xib文件中,並且有一個作為outlet的UIApplicationDelegate引用,當應用程序接收到諸如程序生命週期或系統事件時,UIApplication會調用UIApplicationDelegate中實現的相應的方法。
這樣做的好處是:
把程序的邏輯處理從UIApplication中分離出來;
避免了程序員直接從UIApplication派生子類,試想如果通 過從UIApplication派生子類的方法來管理應用程序的生命週期是多麼痛苦的一件事。
“委託模式”中一般有兩個對象參與處理同一個請求,所謂的請求在iPhone中就是應用程序生命週期和系統事件,接受請求的對象將請求委託給另一個對象來處理,同樣在iPhone中對應的是UIApplication在接收到生命週期和系統事件後委託給UIApplicationDelegate來處理。同樣,委託模式也是很多其它模式的基礎,如狀態模式、策略模式、訪問者模式本質上是在特殊的情況下採用了委託模式。委託模式使得可以用聚合代理繼承(即UIApplication類中包含一個UIApplicationDelegate接口成員)
iPhone不採用繼承體系而採用委託模式來實現聚合的原因,其更深層次在於IPhone框架的多樣化使得繼承無法保證子類行為的一致性,而委託模式恰恰是為了彌補繼承的這個缺點誕生的(說白了就是聚合嘛)。
在應用程序失去焦點前會調用delegate的applicationWillResignActive()方法,而應用程序再次獲取焦點時會調用applicationDidBecomeActive()方法。比如鎖屏會調用applicationWillResignActive()方法,解鎖調用applicationDidBecomeActive()方法。
而applicationDidReceiveMemoryWarning()方法則是在程序因內存洩露crash之前調用。
补充一下,今天跟joe先生讨论了一下,一般event的传递都有自己的chain,event顺着这个chain往上传递,直到有一个对象处理这个事件,这个事件才会停止传播,这个对象ios里叫响应者(responder),十分传神(当然,这是当你理解的时候,开始时我一直以为responder是焦点的持有者,十分nc的想法),而delegate提供给我们一个在对象接收到指定的event后处理该event的接口,究竟要不要处理该event,在于你实不实现这个delegate有关这个event的方法。
总的来说,对于delegate的实现方式还是有点confused,viewController里头有view,view里头的delegate又是viewController,十分纠结的模式。
再次补充:刚刚又看到一点,其实感觉delegate怪的原因是因为这个模式中两个对象间好像并没有清晰的从属关系,这样放在需要避免循环引用的Objective-C中好像不太合理,不过iphone开发中的delegate是以assign方式注入的属性,而不是其他像retain、copy等方式注入的能使reference count自增一个的属性,这样就避免循环引用的产生。
通常在使用对象时不是自己alloc、retain或copy的,就不用去release了。
发表评论
-
What's new in iOS5
2011-10-11 21:07 977Accounts When creating an i ... -
The table of contents in Xcode4
2011-07-08 17:26 863Terminal输入: sudo egrep -lRZ ... -
How to add static library file
2011-07-01 17:55 8331、以xcode的静态库文件模板创建静态库文件; 2、注意类 ... -
iPhone 处理大文件(MD5)
2011-06-13 14:22 1275+(NSString*)fileMD5:(NSStrin ... -
Pre Load
2011-04-30 16:06 699在app store中的很多应用程序非常的笨重,他们有好的界面 ... -
Using Video
2011-04-26 10:59 0记录和编辑视频 从IOS 3.0开始就可以在提供了 ... -
Core Animation
2011-04-23 03:31 668大纲: 什么是Core Animation? 几何 ... -
UIView
2011-04-23 03:08 0p.p1 {margin: 0.0px 0.0px ... -
View Programming
2011-04-21 02:50 4281、用UIKit做简单动画,用core animation做更 ... -
各种函数
2011-04-21 01:03 6621、保存图片到相册(有camera roll保存到camera ... -
关于IOS中的DataSource(数据源)
2011-01-02 15:34 1472数据源是应用程序的模型、视图、还是控制器部分?数据源好像应该是 ... -
ios小记
2010-12-29 14:50 783遵守NSCopying协议的类的实例才能发送copy消息,当 ... -
UIPopoverController的presentPopoverViewWithRect:inView
2010-12-29 12:41 670UIPopoverController中的prese ... -
学习C
2010-12-22 13:33 0C作为一门历史悠久的编 ... -
SwitchView相關概念
2010-12-14 09:48 01、每个视图控制器(包括多视图控制器)都控制一个内容视图,应用 ... -
纸上谈兵-iPhone
2010-12-04 21:46 01、[[NSString alloc] initWithFor ... -
iphone開發中的內存分配
2010-12-02 16:54 9371、內存分配、釋放成對出現 2、注意copy,reta ...
相关推荐
关于Delegate【代理、委托】是C#中一个非常重要的概念,向前可以推演到C++的指针,向后可以延续到匿名方法、lambda表达式。 现在我就从一个最简单最实用的一个小例子出发分析一下Delegate的使用。 现在有两个窗体...
它允许一个对象(委托者)通知另一个对象(委托对象)关于特定事件的发生。在iOS应用中,Delegate经常用于控制器间的通信,如UIViewController和UITableView之间的数据传递。本文将通过一个简单的Demo,深入浅出地...
在iOS开发中,Delegate是一种非常重要的设计模式,它允许对象之间进行通信,特别是当一个对象(委托者)需要通知另一个对象(委托对象)某些事件发生时。本文将深入讲解“简单的Delegate实现”,并以实际代码为例,...
在Objective-C中,`delegate`是一种关键的编程模式,用于实现对象间的通信。本文将深入探讨如何在iPhone编程中使用`delegate`,并以一个名为"MyDelegateSample"的示例项目来说明。 首先,`delegate`是Objective-C中...
在iOS开发中,Delegate是一种非常重要的设计模式,它允许对象之间进行通信,使得一个对象能够对另一个对象的行为进行响应。本篇文章将通过“delegate五步曲”,帮助你深入理解并熟练掌握如何在iOS应用中使用Delegate...
其次,`Delegate.vsd`可能是一个设计图或诊断文件,它可能包含了关于Delegate的类或方法的设计布局,或者是调试过程中的相关记录。这有助于开发者理解代码逻辑,尤其是在处理复杂的Delegate调用链时。 最后,`...
在.NET框架中,Delegate是事件处理和回调机制的关键组成部分,它代表了一组方法的签名,允许我们传递方法作为参数或创建方法的组合。这个“Delegate小Demo”显然是一个用于学习和复习Delegate用法的示例项目。让我们...
网上有很多关于C++ delegate机制的文章,但都讲的是函数指针的内容,上周就C++中实现C#的delegate机制的问题研究了好几天,查看了很多相关资料,才解决了问题,现将我写的C++ delegate测试程序贴出来,希望能帮到有...
在这个"C# Delegate小例子"中,我们将深入探讨Delegate的概念、使用方式以及它在实际编程中的应用。 1. **Delegate概念**: Delegate在C#中是一种类,它代表对方法的引用。这种引用是类型安全的,意味着在编译时就...
在.NET框架中,Delegate是类型安全的函数指针,它允许我们引用方法并像操作对象一样操作它们。Delegate是事件处理、回调函数和多播委托等核心编程概念的基础。在这个"Delegate小Demo"中,我们将深入理解Delegate的...
页面间的通信是应用程序设计的关键部分,而`delegate`模式是OC中实现这种通信的一种常见方法。本篇文章将深入探讨如何在OC中使用`delegate`来实现页面间的传值。 **一、Delegate模式简介** Delegate模式是一种设计...
本示例主要探讨了两种回调方式:Delegate(代理)和Block(块)。这两种方式各有特点,开发者可以根据实际需求选择合适的实现方式。 首先,我们来详细了解一下Delegate。Delegate是一种协议(Protocol)导向的回调...
标签"Swift开发-其它杂项"表明这是一个关于Swift编程中非常规或特定场景的应用,而"PPSMutableDelegate-master"可能是指一个开源项目,该项目可能提供了更复杂或定制化的Delegate解决方案,例如支持动态添加和删除...
在iOS和macOS开发中,`delegate`模式是一种常见的设计模式,用于实现对象间的通信。在标题"delegate一对多"中,"一对多"指的是一个委托(delegate)对象可以同时处理多个其他对象的请求或事件。这种模式尤其在UI组件...
delegate_execute.exe
在iOS和macOS的开发中,Delegate和Block是两种非常重要的设计模式,它们用于实现对象间的通信和回调机制。Delegate通常用于实现一对多的关系,而Block则提供了更加灵活的代码块传递方式。这两种机制在软件设计中都有...
C# Delegate讲解 C# Delegate是.NET Framework中的一种重要机制,它允许开发者在程序中动态地调用方法。Delegate相当于函数指针,它指向程序中另一个以后会被调用的一个或多个方法。委托包含三个重要的信息:所调用...
在Swift编程语言中,SceneDelegate是iOS应用开发中的一个重要组件,尤其在iOS 13及更高版本中。SceneDelegate作为应用程序界面(UI)初始化和管理的核心部分,它负责处理应用程序的生命周期事件,如窗口创建、激活和...
在本主题中,我们将深入探讨如何在Qt的MVC环境中,利用Delegate来显示自定义控件。 **1. MVC模式简介** MVC模式由三个主要组件构成: - **Model**:数据模型,负责存储和管理数据。 - **View**:视图,负责数据的...
ios设计模式delegate 示例 ,导航功能的两个视图控制器(用push方式从一个窗口推到另一个窗口),第二个窗口创建两个按钮,标题分别为红色和绿色,点相应的按钮弹回前一个窗口,同时前一个窗口的背影色变成按钮标题...