国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

詳解iPhone下如何獲取對象教程

移動開發(fā) iOS
本文介紹的是詳解iPhone下如何獲取對象教程,主要是講述iPhone下如何獲取對象句柄和其父對象句柄,先來看內(nèi)容。

詳解iPhone下如何獲取對象教程是本文要介紹的內(nèi)容,主要是講述iPhone下如何獲取對象句柄和其父對象句柄,很詳細(xì)的讓我們?nèi)チ私?strong>iphone中的對象,先來看詳細(xì)內(nèi)容。

常規(guī)iPhone程序?qū)ο蠼Y(jié)構(gòu)如下:

  1. 對象個數(shù)        對象類型  
  2.  
  3. 1            UIApplication  
  4. 1            UIApplicationDelegate/subclass  
  5. 1,N          UIViewController/subclass  
  6. 1,N          UIView/subclsss 

盡管有些書上說可以繞過UIViewController直接對UIView進(jìn)行操作,但個人認(rèn)為此層的作用用于管理視圖和視圖關(guān)系。

下面分別對上述層次關(guān)系的對象類型進(jìn)行學(xué)習(xí)。說明下,下面學(xué)習(xí)的東西僅和問題有關(guān),不會全面學(xué)習(xí)類中的各種方法和屬性。

UIApplication繼承于UIResponder:NSObject

框架:UIKit.framework

頭文件:UIApplication.h

每一個應(yīng)用程序都有一個UIApplication或其子類型的實(shí)例。當(dāng)程序被加載,函數(shù)方法UIApplicationMain就被調(diào)用執(zhí)行,它創(chuàng)建了單件模式的UIApplication對象。之后你可以通過執(zhí)行sharedApplication類方法來訪問。

看看main函數(shù)

  1. int main(int argc, char *argv[]){      
  2. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
  3.     int retVal = UIApplicationMain(argc, argv, nil, nil);  
  4.     [pool release];  
  5.   return retVal;  

可以看出,main函數(shù)的作用在于調(diào)用UIApplicationMain方法來創(chuàng)建一個UIApplication對象實(shí)例,同時(shí)也管理了此類的實(shí)例的內(nèi)存釋放。

那么獲取UIApplication對象實(shí)例,代碼如下:

假設(shè)UIApplicationDelegate協(xié)議繼承類XXXXAppDelegate

  1. UIApplication *app = [UIApplication sharedApplication];  
  2. XXXXAppDelegate *d = (XXXXAppDelegate *)app.delegate;  
  3. //Test these code ,it is ok; 

在main函數(shù)中創(chuàng)建了UIApplication實(shí)例,同時(shí)也就綁定了XXXXAppDelegate

看看原型

  1. int UIApplicationMain ( int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName );  
  2.  
  3. This function is called in the main entry point to create the application object and the application delegate and set up the event cycle.  
  4.  
  5. argc: The count of arguments in argv; this usually is the corresponding parameter to main.  
  6.  
  7. argv: A variable list of arguments; this usually is the corresponding parameter to main.  
  8.  
  9. principalClassName: The name of the UIApplicationclass or subclass.  
  10.  
  11. delegateClassName: The name of the class from which the application delegate is instantiated. 

UIApplication部分:

  1. UIApplicationMain-> 
  2.     UIApplication 

UIApplicationDelegate實(shí)現(xiàn)類

  1. UIApplication-> 

sharedApplication類方法獲取當(dāng)前程序的UIApplication實(shí)例

delegate屬性獲取UIApplicationDelegate實(shí)現(xiàn)類的實(shí)例

windows屬性獲取當(dāng)前程序涉及到窗口類數(shù)組

keyWindow屬性獲取當(dāng)前程序關(guān)鍵窗口

即然有了UIApplicationDelegate協(xié)議的實(shí)現(xiàn)類,那如何實(shí)現(xiàn)UIViewController/subclass的初始化?

實(shí)現(xiàn)Controller類的初始化的地方有兩處:

  1. application:didFinishLaunchingWithOptions:  
  2. applicationDidFinishLaunching: 

這兩個方法,后者是前期版本下的。在iOS3.0以及之后,應(yīng)該使用前者來完成開始這個過程。XCode4運(yùn)行的是application:didFinishLaunchingWithOptions:
當(dāng)然,你也可以刪除application:didFinishLaunchingWithOptions:,自己添加applicationDidFinishLaunching方法來實(shí)現(xiàn)。不推薦此操作。

看下實(shí)際對UIApplicationDelegate如何編寫其實(shí)現(xiàn)類

  1. #import <UIKit/UIKit.h> 
  2. @class NavSmallPhoneViewController;  
  3. @interface NavSmallPhoneAppDelegate : NSObject <UIApplicationDelegate> {  
  4. }  
  5. @property (nonatomic, retain) IBOutlet UIWindow *window;  
  6. @property (nonatomic, retain) IBOutlet NavSmallPhoneViewController *viewController;  
  7. @end  
  8.  
  9. #import "NavSmallPhoneAppDelegate.h"  
  10. #import "NavSmallPhoneViewController.h"  
  11. @implementation NavSmallPhoneAppDelegate  
  12. @synthesize window=_window;  
  13. @synthesize viewController=_viewController;  
  14. @synthesize info;  
  15. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{      
  16.           // Override point for customization after application launch.          
  17.           selfself.window.rootViewController = self.viewController;      
  18.           [self.window makeKeyAndVisible];         
  19.           //Todo 這部分代碼是未測試和說明一個問題的:當(dāng)前UIApplicationDelegate實(shí)現(xiàn)類中的window屬性來源哪?      
  20.           UIWindow *w = [UIApplication sharedApplication].keyWindow;      
  21.           NSLog(@"%@\n%@" ,w ,self.window);      
  22.           if (w == self.window)          
  23.           NSLog(@"AppDelegate 'window is UIApplication current keyWindow!");         
  24.           return YES;}  
  25.           /*為了方便閱讀,這里僅保留了需要看的方法。其他自動生成的代碼在此移除,看完整的,自己通過XCode4自動生成*/  
  26.           - (void)dealloc{      
  27.           [_window release];      
  28.           [_viewController release];      
  29.           [super dealloc];  
  30.   }  
  31. @end 

看頭文件,你發(fā)現(xiàn)實(shí)現(xiàn)類,有了兩個屬性,window和viewController;就是保存當(dāng)前實(shí)現(xiàn)類所關(guān)聯(lián)的window和視圖控制器

通過運(yùn)行,輸出“AppDelegate 'window is UIApplication current keyWindow!”,說明實(shí)現(xiàn)類的window屬性來源UIApplication實(shí)例當(dāng)前的keyWindow屬性。

也就是說,如果UIApplication實(shí)例只有一份UIWindow實(shí)例,那肯定和其UIApplicationDelegate實(shí)現(xiàn)類的window屬性指向同一UIWindow實(shí)例。

之所以在UIApplicationDelegate實(shí)現(xiàn)類定義這么兩個屬性,就是為了更方便的使用UIWindow和UIViewController,作用就是建立對象樹狀關(guān)系,便于彼此調(diào)用和實(shí)現(xiàn)。

在這里,應(yīng)該清楚了UIApplication和UIViewController之間是通過UIWinodw來關(guān)聯(lián)的,盡管在UIApplicationDelegate實(shí)現(xiàn)類中定義一個viewController屬性。修改下上面的關(guān)系圖:

常規(guī)iPhone程序?qū)ο蠼Y(jié)構(gòu)如下:

  1. 對象個數(shù)        對象類型  
  2.  
  3. 1         UIApplication  
  4. 1            UIApplicationDelegate/subclass  
  5. 1            UIWindow  
  6. 1           .rootViewController屬性  
  7. 1,N          UIViewController/subclass  
  8. 1,N           UIView/subclsss 

根據(jù)現(xiàn)在的對象結(jié)構(gòu)圖,可以知道UIWindow實(shí)例在此僅僅是起承上啟下的作用。

UIWindow繼承UIView:UIResponder:NSObject

現(xiàn)在可以看下UIViewController

#p#

繼承UIResponder:NSObject

UIViewController其子類UINavigationController和UITabBarController為復(fù)雜視圖控制器和視圖的層次結(jié)構(gòu)提供額外的行為處理功能。

針對問題看下,有哪些視圖控制器可訪問?

  1. parentViewController  property  
  2. searchDisplayController  property  
  3. splitViewController  property  
  4. modalViewController  property  
  5. navigationController  property  
  6. tabBarController  property 

上述控制器訪問器都是只讀,說明這些控制器是由內(nèi)部或初始化就進(jìn)行處理。

從這里來看,至少可以說明一點(diǎn),Controller之間的關(guān)聯(lián)是存在的

最關(guān)鍵,怎么去管理視圖?

屬性view和方法loadView

UIView又如何得到它的操作者?又如何管理自身的子視圖?

繼承于UIResponder:NSObject

如果UIView包含在UIViewController下,只能順起獲取到對應(yīng)的UIView,暫時(shí)未知如何根據(jù)UIView獲取UIViewController

UIView關(guān)于管理視圖層次,如下:

Managing the View Hierarchy

  1.   superview  property  
  2.   subviews  property  
  3.   window  property  
  4. – addSubview:  
  5. – bringSubviewToFront:  
  6. – sendSubviewToBack:  
  7. – removeFromSuperview  
  8. – insertSubview:atIndex:  
  9. – insertSubview:aboveSubview:  
  10. – insertSubview:belowSubview:  
  11. – exchangeSubviewAtIndex:withSubviewAtIndex:  
  12. – isDescendantOfView: 

感覺可以通過屬性window來獲取Controller,從某一個角度來說,這個Controller應(yīng)該是當(dāng)前視圖的父對象

文中涉及紅色粗體,是本文的相關(guān)答案標(biāo)記,如圖:

詳解iPhone下如何獲取對象教程

UIView.window屬性來源于當(dāng)前UIApplication.keyWindow

可以通過此屬性讓UIView間接獲取到該視圖的UIViewController類。

小結(jié):詳解iPhone下如何獲取對象教程的內(nèi)容介紹完了,希望本文對你有所幫助!

責(zé)任編輯:zhaolei 來源: 博客園
相關(guān)推薦

2011-08-03 17:44:57

iPhone App 文件

2011-08-22 12:01:38

iPhone開發(fā)文件

2011-08-10 11:12:33

iPhone文件

2011-07-26 09:53:53

iPhone AsyncSocke 網(wǎng)絡(luò)

2011-07-29 11:28:58

iPhone開發(fā)

2011-05-12 08:49:58

iPhone SDKXcode

2011-08-10 10:18:22

iPhone多線程線程

2011-07-18 13:11:53

2011-06-24 17:05:07

QT QT 4.7.3 windows

2011-08-05 16:10:31

iPhone 網(wǎng)絡(luò) NSURLConne

2011-06-03 10:19:59

iphone Objective-

2011-08-12 13:19:24

iPhoneSDK安裝

2011-08-10 15:48:10

iPhone網(wǎng)絡(luò)

2011-07-21 16:48:19

iPhone 游戲

2011-08-12 13:35:23

iPhone文件流ASIHTTPRequ

2021-03-08 08:40:25

Spring Bean 創(chuàng)建單例對象

2011-08-17 15:10:21

iPhone開發(fā)Web視圖

2011-07-21 17:00:59

iPhone UIWebView Status Cod

2011-07-27 15:47:09

iPhone Simulator 文件

2011-08-03 16:35:10

iPhone UIView 動畫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

欧美激情自拍| 色偷偷久久人人79超碰人人澡 | 日韩欧美视频在线| 久热久精久品这里在线观看| 国产精品资源站在线| 青青影院一区二区三区四区| 国际精品欧美精品| 91精品国产高清自在线| 日韩在线亚洲| 九九九热精品免费视频观看网站| 亚洲精品在线影院| 亚洲欧美一区二区三区久久| 欧美人与禽猛交乱配| 欧美一区二区高清| 免费av不卡| 在线成人小视频| 日本暖暖在线视频| 欧美一二三四区在线| 国产成人午夜| 91.com在线观看| 中日韩高清电影网| 亚洲精品乱码久久久久久金桔影视| 手机在线免费看av| 日韩精品在线影院| 欧美一区二区三区婷婷| www欧美日韩| 超碰成人福利| 国产精品日韩专区| 欧美精品91| 欧美精品成人一区二区在线观看 | 国产精品资源在线观看| 国内少妇毛片视频| 99久久久久久99| 日韩中文字幕免费在线| 欧美国产精品一区| 国产在线视频你懂| 粉嫩老牛aⅴ一区二区三区| 福利成人在线观看| 亚洲第一免费网站| 999精品视频在线观看| 国产成人涩涩涩视频在线观看| 97国产精品| 欧美日韩在线精品一区二区三区| 国产剧情av麻豆香蕉精品| 天堂在线资源视频| 精品高清一区二区三区| 成人日批视频| 日韩视频亚洲视频| 美女呻吟一区| 亚洲精品女av网站| 蜜桃av一区二区在线观看| 成人免费在线网| 一区二区三区加勒比av| 尤物网在线观看| 久久久精品999| 99久久99视频只有精品| 亚洲精品国产系列| 午夜不卡影院| 黄色aaa级片| 国产日韩精品在线| 亚洲欧美一区二区精品久久久| 一区二区自拍| 青青草原网站在线观看| 成人av免费在线观看| 亚洲综合影视| 欧美成人亚洲成人| 日韩av电影一区| 亚洲一区尤物| 午夜电影久久久| 粉嫩欧美一区二区三区高清影视| free性欧美| 国产树林野战在线播放| 亚洲网在线观看| 综合激情五月婷婷| 日本阿v视频在线观看| 久久激五月天综合精品| porn亚洲| 亚洲天堂av免费在线观看| 中文文精品字幕一区二区| 2024最新电影在线免费观看| 久久久久久亚洲精品中文字幕| 久久99国产精品免费| 九色porny在线| 91sao在线观看国产| 亚洲a在线视频| 午夜视频在线观看网站| 亚洲精品免费在线看| 亚洲欧洲午夜一线一品| 成人在线一区二区三区| www.久久爱.com| 成人高清在线观看免费| 999热视频| 国产视频亚洲精品| 日本一区二区不卡视频| 日本福利一区| p色视频免费在线观看| 国产精品欧美日韩一区二区| 精品久久久久香蕉网| 99精品视频一区二区三区| 国产亚洲一卡2卡3卡4卡新区 | 欧美国产亚洲视频| 激情综合视频| 你懂的视频在线播放| 精品国产一区二区三区麻豆免费观看完整版 | 91精品久久久久久久久久入口| 96av麻豆蜜桃一区二区| 欧美日韩激情| 狠狠躁少妇一区二区三区| 日韩av电影国产| 久久一二三四| 亚洲国产资源| 青青久久av北条麻妃海外网| 91免费在线视频观看| 韩国三级一区| 亚洲天堂av免费在线观看| 6080国产精品一区二区| 久久视频精品| 三级黄色网址| 欧美在线xxx| 国产亚洲一区二区三区四区| 欧美va视频| 国产日产欧美一区二区| 欧美va亚洲va| 日韩中文字幕麻豆| 免费观看久久久久| 韩国一区二区三区美女美女秀| 一本久久a久久免费精品不卡| 日本一二区不卡| 性欧美18+| 国产精品黄视频| 亚洲综合色自拍一区| 精品久久久久久久| 猛男欧美办公室激情在线| 国产精品久久久精品| 亚洲一区二区在线免费看| 日本久久精品| 日韩欧美亚洲系列| 成人av播放| 色婷婷久久一区二区三区麻豆| 中文字幕日韩一区二区不卡| 蜜桃视频在线观看视频| 久久国产精品精品国产色婷婷| 在线观看免费亚洲| 在线成人www免费观看视频| 激情视频在线观看| 波多野结衣三级在线| 日韩有码视频在线| 国产精品入口麻豆九色| 操欧美老女人| 免费黄色网址在线观看| 无码人妻精品一区二区三区99v| 国产亚洲欧美一区| 久久久久久久久一| 奇米狠狠一区二区三区| 日韩三级电影网| 久久另类ts人妖一区二区| 亚洲激情视频网站| 91免费国产在线| 国产精品探花在线观看| 狠狠v欧美ⅴ日韩v亚洲v大胸| 日韩欧美在线一区二区| 伊人久久久久久久久久久久久| 国产清纯白嫩初高生在线观看91| 精品国产一区二区三区小蝌蚪| 色综合久久影院| 五十路熟女丰满大屁股| 国产精品1234| 欧美一区二区三区公司| 91蝌蚪porny成人天涯| 亚州av乱码久久精品蜜桃| 性国产高清在线观看| 国模吧无码一区二区三区| 国产经典一区二区| 日韩欧美一级二级三级 | 成人午夜黄色影院| 日韩精品一区在线观看| 国产女同性恋一区二区| 一区二区电影| 欧美日韩123区| 老司机很黄的视频免费| 狠狠久久综合婷婷不卡| 色偷偷噜噜噜亚洲男人| 亚洲一区在线观看视频| 久久97超碰色| 日韩在线麻豆| 麻豆理论在线观看| 午夜精彩视频| 中文字幕一区二区三区乱码 | 日本精品免费| 欧美激情精品久久久久| 欧美三级韩国三级日本一级| 成人免费av资源| 欧美激情91| 日本一区影院| 黄网站在线观| 四虎在线免费观看| 成人午夜视频免费在线观看| 免费成人av网站| 国产精品白嫩初高中害羞小美女| 亚洲欧洲一区二区三区在线观看|