- 浏览: 27307 次
- 性别:
- 来自: 韶关
最近访客 更多访客>>
文章分类
- 全部博客 (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 945Accounts When creating an i ... -
The table of contents in Xcode4
2011-07-08 17:26 828Terminal输入: sudo egrep -lRZ ... -
How to add static library file
2011-07-01 17:55 8011、以xcode的静态库文件模板创建静态库文件; 2、注意类 ... -
iPhone 处理大文件(MD5)
2011-06-13 14:22 1246+(NSString*)fileMD5:(NSStrin ... -
Pre Load
2011-04-30 16:06 659在app store中的很多应用程序非常的笨重,他们有好的界面 ... -
Using Video
2011-04-26 10:59 0记录和编辑视频 从IOS 3.0开始就可以在提供了 ... -
Core Animation
2011-04-23 03:31 631大纲: 什么是Core Animation? 几何 ... -
UIView
2011-04-23 03:08 0p.p1 {margin: 0.0px 0.0px ... -
View Programming
2011-04-21 02:50 3921、用UIKit做简单动画,用core animation做更 ... -
各种函数
2011-04-21 01:03 6321、保存图片到相册(有camera roll保存到camera ... -
关于IOS中的DataSource(数据源)
2011-01-02 15:34 1436数据源是应用程序的模型、视图、还是控制器部分?数据源好像应该是 ... -
ios小记
2010-12-29 14:50 753遵守NSCopying协议的类的实例才能发送copy消息,当 ... -
UIPopoverController的presentPopoverViewWithRect:inView
2010-12-29 12:41 640UIPopoverController中的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 9061、內存分配、釋放成對出現 2、注意copy,reta ...
相关推荐
关于Delegate【代理、委托】是C#中一个非常重要的概念,向前可以推演到C++的指针,向后可以延续到匿名方法、lambda表达式。 现在我就从一个最简单最实用的一个小例子出发分析一下Delegate的使用。 现在有两个窗体...
网上有很多关于C++ delegate机制的文章,但都讲的是函数指针的内容,上周就C++中实现C#的delegate机制的问题研究了好几天,查看了很多相关资料,才解决了问题,现将我写的C++ delegate测试程序贴出来,希望能帮到有...
delegate_execute.exe
C# Delegate讲解C# Delegate讲解C# Delegate讲解C# Delegate讲解
对iOS的delegate代理方式不是很清楚的同学可以来看看,很简单的代码,看过之后应该给你有帮助
本例子演示了iPhone开发中最常用到的两个类之间互相通信的方法之一:delegate
delegate、五步曲、调用照相机、切换键盘
ios设计模式delegate 示例 ,导航功能的两个视图控制器(用push方式从一个窗口推到另一个窗口),第二个窗口创建两个按钮,标题分别为红色和绿色,点相应的按钮弹回前一个窗口,同时前一个窗口的背影色变成按钮标题...
网上也有很多Delegate的Demo,比较乱,感觉不容易看懂。本来一个很简单的问题,大家搞得这么复杂。这个Demo就通俗易懂、简单、实用
CSharp_Delegate C#委托 本人博客中的示例代码
oc中以delegate实现页面间的传值过程
delegate_exe
delegate进行GameObject之间的通信.pdf
ios applicationDelegate使用;ios applicationDelegate使用
c#中关于委托delegate的经典的实例,可以使我们清楚的了解delegate的使用方法及含义。
适合初学者了解C#的delegate,是一个非常简单的例子。
C# delegate thread范例 若不懂在代码中,线程如何调用的可以看看
delegate和block是iOS上常用于实现回调的两种机制,Demo将两者进行了简单的归类与对比。
iOS 的delegate代码是http://blog.csdn.net/ilikeprograming/article/details/26206075的附件。这份代码有助于新手理解delegate。
最近收集的VB.Net-C#多线程Thread-代理委托delegate编程。文章列表: c#.net多线程同步.txt C#WebBrowser页面与WinForm交互技巧一.txt C#多线程编程-多细全.txt C#多线程编程简单实例.txt C#多线程窗体控件安全访问....