Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Éî¶È½âÎöiOSÓ¦ÓóÌÐòµÄÉúÃüÖÜÆÚ
 
×÷ÕߣºÁõÒ«Öù ·¢²¼ÓÚ 2015-6-25
  2079  次浏览      28
 

iOSÓ¦ÓóÌÐòÒ»°ã¶¼ÊÇÓÉ×Ô¼º±àдµÄ´úÂëºÍϵͳ¿ò¼Ü£¨system frameworks£©×é³É£¬ÏµÍ³¿ò¼ÜÌṩһЩ»ù±¾infrastructure¸øËùÓÐAppÀ´ÔËÐУ¬¶øÄãÌṩ×Ô¼º±àдµÄ´úÂëÀ´¶¨ÖÆAppµÄÍâ¹ÛºÍÐÐΪ¡£ Òò´Ë£¬Á˽âiOS InfrastructureºÍËüÃÇÈçºÎ¹¤×÷¶Ô±àдAppÊǺÜÓаïÖúµÄ¡£

Mainº¯ÊýÈë¿Ú

ËùÓлùÓÚC±àдµÄAppµÄÈë¿Ú¶¼ÊÇmainº¯Êý£¬µ«iOSÓ¦ÓóÌÐòÓе㲻ͬ¡£²»Í¬¾ÍÊÇÄã²»ÐèҪΪiOSÓ¦ÓóÌÐò¶ø×Ô¼º±àдmainº¯Êý£¬µ±ÄãʹÓÃXcode´´½¨¹¤³ÌµÄʱºò¾ÍÒѾ­ÌṩÁË¡£³ý·ÇÒ»Ð©ÌØÊâÇé¿ö£¬·ñÔòÄã²»Ó¦¸ÃÐÞ¸ÄXcodeÌṩµÄmainº¯ÊýʵÏÖ¡£Ê¾Àý´úÂëÈçÏ£º

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
} }

ÉÏÃæÊµÀý´úÂëÖÐÓÐÒ»¸öºÜÖØÒªµÄº¯Êý UIApplicationMain£¬ËüÖ÷ÒªÊÇ´´½¨AppµÄ¼¸¸öºËÐĶÔÏóÀ´´¦ÀíÒÔϹý³Ì£º

  1. ´Ó¿ÉÓÃStoryboardÎļþ¼ÓÔØÓû§½çÃæ£»
  2. µ÷ÓÃAppDelegate×Ô¶¨Òå´úÂëÀ´×öһЩ³õʼ»¯ÉèÖã»
  3. ½«App·ÅÈëMain Run Loop»·¾³ÖÐÀ´ÏìÓ¦ºÍ´¦ÀíÓëÓû§½»»¥²úÉúµÄʼþ¡£

Ó¦ÓóÌÐòµÄ¼Ü¹¹

iOSÓ¦ÓóÌÐò¶¼×ñÑ­Model-View-ControllerµÄ¼Ü¹¹£¬Model¸ºÔð´æ´¢Êý¾ÝºÍ´¦ÀíÒµÎñÂß¼­£¬View¸ºÔðÏÔʾÊý¾ÝºÍÓëÓû§½»»¥£¬ControllerÊÇÁ½ÕßµÄÖн飬Эµ÷ModelºÍViewÏ໥Э×÷¡£ËüÃǵÄͨѶ¹æÔòÈçÏ£º

1. ControllerÄܹ»·ÃÎÊModelºÍView£¬ModelºÍView²»ÄÜ»¥Ïà·ÃÎÊ¡£

2. µ±ViewÓëÓû§½»»¥²úÉúʼþʱ£¬Ê¹ÓÃtarget-action·½Ê½À´´¦Àí¡£

3. µ±ViewÐèÒª´¦ÀíÒ»Ð©ÌØÊâUIÂß¼­»ò»ñÈ¡Êý¾ÝԴʱ£¬Í¨¹ýdelegate»òdata source·½Ê½½»¸øControllerÀ´´¦Àí¡£

4. Model²»ÄÜÖ±½ÓÓëControllerͨÐÅ£¬µ±ModelÓÐÊý¾Ý¸üÐÂʱ£¬¿ÉÒÔͨ¹ýNotification»òKVO (Key Value Observing)À´Í¨ÖªController¸üÐÂView¡£

Á˽âiOSµÄMVCÉè¼ÆÄ£Ê½Ö®ºó£¬ÎÒÃÇ´ÓÏÂͼÀ´Á˽âÔÚMVCģʽÏÂiOSÓ¦ÓóÌÐòÓÐÄÄЩ¹Ø¼ü¶ÔÏóÒÔ¼°ËüÃÇÖ°ÔðÖ÷ÒªÊÇʲô£¿

  • UIApplication ¶ÔÏó

Óû§ÓëiOSÉ豸½»»¥Ê±²úÉúµÄʼþ£¨Multitouch Events£¬Motion Event£¬Remote Control Event£©½»ÓÉUIApplication¶ÔÏóÀ´·Ö·¢¸øcontrol objects£¨UIControl ¶ÔÓ¦µÄtarget objectsÀ´´¦Àí²¢ÇÒ¹ÜÀíÕû¸öʼþÑ­»·£¬¶øÒ»Ð©¹ØÓÚAppÔËÐÐÊ±ÖØÒªÊ¼þίÍиøapp delegateÀ´´¦Àí¡£

  • App delegate ¶ÔÏó

App delegate¶ÔÏó×ñÑ­UIApplicationDelegateЭÒ飬ÏìÓ¦appÔËÐÐÊ±ÖØÒªÊ¼þ(appÆô¶¯¡¢appÄÚ´æ²»×ã¡¢appÖÕÖ¹¡¢Çл»µ½ ÁíÒ»¸öapp¡¢ÇлØapp)£¬Ö÷ÒªÓÃÓÚappÔÚÆô¶¯Ê±³õʼ»¯Ò»Ð©ÖØÒªÊý¾Ý½á¹¹£»ÀýÈ磬³õʼ»¯UIWindow£¬ÉèÖÃһЩÊôÐÔ£¬ÎªwindowÌí¼Ó rootViewController¡£

  • View controller¶ÔÏó

View ControllerÓÐÒ»¸öviewÊôÐÔÊÇview²ã´Î½á¹¹Öеĸùview£¬Äã¿ÉÒÔÌí¼Ó×ÓviewÀ´¹¹½¨¸´ÔÓµÄview£»controllerÓÐһЩ viewDidLoad¡¢viewWillAppearµÈ·½·¨À´¹ÜÀíviewµÄÉúÃüÖÜÆÚ£»ÓÉÓÚËü¼Ì³ÐUIResponder£¬ËùÓл¹»áÏìÓ¦ºÍ´¦ÀíÓû§Ê ¼þ¡£

  • Documents ºÍ data model ¶ÔÏó

data model¶ÔÏóÖ÷ÒªÓÃÀ´´æ´¢Êý¾Ý¡£ÀýÈ磬¶öÁËôappÔÚËÑË÷Çл»µØÖ·ºó£¬ÓÐÀúÊ·¼Ç¼ËÑË÷µØÖ·ÀúÊ·£¬µ±appÏÂ´ÎÆô¶¯Ê±£¬¶ÁÈ¡ºÍÏÔʾËÑË÷µØÖ·ÀúÊ·¡£

document¶ÔÏó(¼Ì³ÐUIDocument)ÓÃÀ´¹ÜÀíһЩ»òËùÓеÄdata model¶ÔÏó¡£document¶ÔÏó²¢²»ÊDZØÐëµÄ£¬µ«ÌṩһÖÖ·½±ãµÄ·½Ê½À´·Ö×éÊôÓÚµ¥¸öÎļþ»ò¶à¸öÎļþµÄÊý¾Ý¡£

  • UIWindow ¶ÔÏó

UIWindow¶ÔÏóλÓÚview²ã´Î½á¹¹ÖеÄ×î¶¥²ã£¬Ëü³äµ±Ò»¸ö»ù±¾ÈÝÆ÷¶ø²»ÏÔʾÄÚÈÝ£¬Èç¹ûÏëÏÔʾÄÚÈÝ£¬Ìí¼ÓÒ»¸öcontent viewµ½window¡£

ËüÒ²ÊǼ̳ÐUIResponder£¬ËùÒÔËüÒ²ÊÇ»áÏìÓ¦ºÍ´¦ÀíÓû§Ê¼þ¡£

  • View¡¢control¡¢layer ¶ÔÏó

View ¶ÔÏó¿ÉÒÔͨ¹ýaddSubviewºÍremoveFromSuperview µÈ·½·¨¹ÜÀíviewµÄ²ã´Î½á¹¹£¬Ê¹ÓÃlayoutSubviews¡¢layoutIfNeededºÍsetNeedsLayoutµÈ·½·¨²¼¾ÖviewµÄ²ã ´Î½á¹¹£¬µ±Äã·¢ÏÖϵͳÌṩviewÒѾ­Âú×ã²»ÁËÄãÏëÒªµÄÍâ¹ÛÐèÇóʱ£¬¿ÉÒÔÖØÐ´drawRect·½·¨»òͨ¹ýlayerÊôÐÔÀ´¹¹Ô츴ÔÓµÄͼÐÎÍâ¹ÛºÍ¶¯»­¡£»¹ÓÐ Ò»µã£¬UIViewÒ²ÊǼ̳ÐUIResponder£¬ËùÒÔÒ²Äܹ»´¦ÀíÓû§Ê¼þ¡£

Control¶ÔÏóͨ³£¾ÍÊÇ´¦ÀíÌØ¶¨ÀàÐÍÓû§½»»¥µÄView£¬³£ÓõÄÓÐbutton¡¢switch¡¢text fieldµÈ¡£

³ýÁËʹÓÃViewºÍControlÀ´¹¹½¨view²ã´Î½á¹¹À´Ó°ÏìappÍâ¹ÛÖ®Í⣬»¹¿ÉÒÔʹÓÃCore Animation¿ò¼ÜµÄLayer¶ÔÏóÀ´äÖȾviewÍâ¹ÛºÍ¹¹½¨¸´Ôӵ͝»­¡£

Main Run Loop

Ò» ¸öiOSÓ¦ÓóÌÐòµÄmain run loopÖ÷Òª×÷ÓÃÊÇ´¦ÀíËùÓÐÓëÓû§Ïà¹ØµÄʼþ¡£UIApplication¶ÔÏóÔÚÆô¶¯Ê±¾ÍÉèÖÃmain run loopºÍʹÓÃËüÀ´´¦ÀíʼþºÍ¸üлùÓÚviewµÄ½çÃæ¡£ÕýÈçËüµÄÃû×ÖÏÔʾ£¬main run loopÊÇÔËÐÐÔÚÓ¦ÓóÌÐòµÄÖ÷Ï̡߳£ÕâÑù¾ÍÈ·±£Óë½ÓÊÕµ½Óû§Ïà¹ØµÄʼþ±»ÓÐÐòµØ´¦Àí¡£

ÏÂͼÏÔʾmain run loopµÄ¼Ü¹¹ºÍÓû§Ê¼þ×îÖÕÊÇÔõÑù±»Ó¦ÓóÌÐò´¦Àí¡£µ±Óû§ÓëÉ豸½»»¥Ê±£¬ÏµÍ³¾Í»áÉú³ÉÓë½»»¥¹ØÁªµÄʼþ£¬È»ºó±»Ó¦ÓóÌÐòµÄUIKitͨ¹ýÒ»¸öÌØÊâµÄ¶Ë¿Ú À´·Ö·¢¡£Ó¦ÓóÌÐò°Ñʼþ·ÅÈë¶ÓÁУ¬È»ºóÖð¸ö·Ö·¢µ½main run loopÀ´Ö´ÐС£UIApplication¶ÔÏóÊǵÚÒ»¸ö¶ÔÏó½ÓÊÕµ½Ê¼þ£¬È»ºó¾ö¶¨ÔõÑù´¦ÀíËü¡£Ò»¸ötouch eventͨ³£¶¼±»·Ö·¢µ½main window¶ÔÏó£¬È»ºóÒÀ´Î·Ö·¢µ½·¢Éú´¥ÅöµÄview¡£ÆäËûeventµÄ½ÓÊÕʼþ¶ÔÏó·¾¶¿ÉÄÜÓе㲻ͬ¡£

´ó ¶àÊýµÄʼþͨ¹ýʹÓÃmain run loopÀ´·Ö·¢£¬µ«ÓÐЩ²»ÊÇ¡£ÓÐЩʼþ±»·¢Ë͵½Ò»¸ödelegate¶ÔÏó»ò´«µÝµ½ÄãÌṩµÄblockÖС£ÏëÁ˽â¸ü¶àÈçºÎ´¦Àí´ó¶àÊýÀàÐ͵Äʼþ£¬ÆäÖаüÀ¨ touch¡¢remote control¡¢motion¡¢accelerometerºÍgyroscopicµÈʼþ£¬Çë²éÔÄ Event Handle Guide for iOS¡£

Ó¦ÓóÌÐòµÄ״̬ºÍ¶àÈÎÎñ

ÓÐʱϵͳ»á´ÓAppÒ»ÖÖ״̬Çл»ÁíÒ»ÖÖ״̬À´ÏìӦϵͳ·¢ÉúµÄʼþ¡£ÀýÈ磬µ±Óû§°´ÏÂHome¼ü¡¢µç»°´òÈë»òÆäËûÖжϷ¢Éúʱ£¬µ±Ç°ÔËÐеÄÓ¦ÓóÌÐò»áÇл»×´Ì¬À´ÏìÓ¦¡£Ó¦ÓóÌÐòµÄ״̬ÓÐÒÔϼ¸ÖÖ£º

  • Not running£ºApp»¹Ã»ÔËÐÐ
  • Inactive£ºAppÔËÐÐÔÚforegroundµ«Ã»ÓнÓÊÕʼþ
  • Active£ºAppÔËÐÐÔÚforegroundºÍÕýÔÚ½ÓÊÕʼþ
  • Background£ºÔËÐÐÔÚbackgroundºÍÕýÔÚÖ´ÐдúÂë
  • Suspended£ºÔËÐÐÔÚbackgroundµ«Ã»ÓÐÖ´ÐдúÂë

´ó¶àÊý·¢Éú״̬ת»»Ê±¶¼»áµ÷ÓÃdelegate¶ÔÏó¶ÔÓ¦µÄ·½·¨À´ÏìÓ¦AppµÄ״̬¸Ä±ä¡£ÏÂÃæ»ã×ÜÁËdelegate¶ÔÏóµÄËùÓз½·¨£¬µ±App״̬·¢Éúת»»Ê±£¬Äã¿ÉÄÜ»áʹÓõ½ËüÃÇ¡£

  • application:willFinishLaunchingWithOptions: - Õâ¸ö·½·¨ÊÇÄãÔÚÆô¶¯Ê±µÄµÚÒ»´Î»ú»áÀ´Ö´ÐдúÂë
  • application:didFinishLaunchingWithOptions: - Õâ¸ö·½·¨ÔÊÐíÄãÔÚÏÔʾapp¸øÓû§Ö®Ç°Ö´ÐÐ×îºóµÄ³õʼ»¯²Ù×÷
  • applicationDidBecomeActive: - appÒѾ­Çл»µ½active״̬ºóÐèÒªÖ´ÐеIJÙ×÷
  • applicationWillResignActive: - app½«Òª´Óǰ̨Çл»µ½ºǫ́ʱÐèÒªÖ´ÐеIJÙ×÷
  • applicationDidEnterBackground: - appÒѾ­½øÈëºǫ́ºóÐèÒªÖ´ÐеIJÙ×÷
  • applicationWillEnterForeground: - app½«Òª´Óºǫ́Çл»µ½Ç°Ì¨ÐèÒªÖ´ÐеIJÙ×÷£¬µ«app»¹²»ÊÇactive״̬
  • applicationWillTerminate: - app½«Òª½áÊøÊ±ÐèÒªÖ´ÐеIJÙ×÷

ÏÖÔÚ½²ÏÂAppÆô¶¯¡¢À´»ØÇл»AppºÍËøÆÁʱ״̬µÄÇл»ºÍµ÷ÓöÔÓ¦ÄÄЩdelegate¶ÔÏóµÄ·½·¨£º

  • AppÆô¶¯ºÍactive/inactive

Èç ͼËùʾ£¬µ±AppÆô¶¯Ê±£¬Ê×ÏÈÓÉnot running״̬Çл»µ½inactive״̬£¬´Ëʱµ÷ÓÃapplication:didFinishLaunchingWithOptions:·½·¨£» È»ºóÓÉinactive״̬Çл»µ½active״̬£¬´Ëʱµ÷ÓÃapplicationDidBecomeActive:·½·¨¡£

µ±App·¢ÉúÖжÏʱ£¬ÓÉactive״̬Çл»µ½inactive״̬£¬´Ëʱµ÷ÓÃapplicationWillResignActive:·½·¨¡£

  • À´»ØÇл»App

Èç ͼËùʾ£¬µ±Çл»µ½ÁíÒ»¸öAppʱ£¬ÓÉ״̬activeÇл»µ½inactive£¬´Ëʱµ÷ÓÃapplicationWillResignActive:·½·¨£» È»ºó´Óinactive״̬Çл»µ½running״̬£¬´Ëʱµ÷ÓÃapplicationDidEnterBackground:·½·¨¡£

¶ø µ±Çл»»Ø±¾À´µÄAppʱ£¬ÓÉrunning״̬Çл»µ½inactive״̬£¬´Ëʱµ÷ÓÃapplicationWillEnterForeground:·½ ·¨£¬È»ºóÓÉinactive״̬Çл»µ½active״̬£¬µ÷ÓÃapplicationDidBecomeActive:·½·¨¡£

  • ËøÆÁ

ÈçͼËùʾ£¬µ±ÊÖ»úËøÆÁʱ£¬ÓÉ״̬activeÇл»µ½inactive£¬´Ëʱµ÷ÓÃapplicationWillResignActive:£»È»ºóÔÙÓÉ inactive״̬Çл»µ½running״̬£¬´Ëʱµ÷ÓÃapplicationDidEnterBackground:·½·¨¡£

¸ü¶à¹ØÓÚapp״̬Çл»ÒÔ¼°µ÷ÓÃapp delegateÄÄЩ·½·¨£¬Çë¹Û¿´WWDC 2011 SessionµÄ session_320__adopting_multitasking_in_your_app ÊÓÆµ¡£

Ó¦ÓóÌÐòµÄÖÕÖ¹

ϵͳ³£³£ÊÇΪÆäËûappÆô¶¯Ê±ÓÉÓÚÄÚ´æ²»×ã¶ø»ØÊÕÄÚ´æ×îºóÐèÒªÖÕÖ¹Ó¦ÓóÌÐò£¬µ«ÓÐʱҲ»áÊÇÓÉÓÚappºÜ³¤Ê±¼ä²ÅÏìÓ¦¶øÖÕÖ¹¡£Èç¹ûappµ±Ê±ÔËÐÐÔÚºǫ́²¢ÇÒû ÓÐÔÝÍ££¬ÏµÍ³»áÔÚÓ¦ÓóÌÐòÖÕֹ֮ǰµ÷ÓÃapplicationWillTerminate:À´±£´æÓû§µÄÒ»Ð©ÖØÒªÊý¾ÝÒÔ±ãÏÂ´ÎÆô¶¯Ê±»Ö¸´µ½appÔ­À´µÄ״̬¡£

×ܽá

±¾ÎÄ×ܽáÁËiOSÓ¦ÓóÌÐò´ÓÆô¶¯ µ½½áÊø¹ý³ÌÖÐÓÐÄÄЩ¹Ø¼ü¶ÔÏóÔÚ²ÎÓ룬ÒÔ¼°µ±Óû§Óëϵͳ½»»¥Ê±²úÉúʼþʱ£¬ÏµÍ³ÀûÓÃmain run loopÀ´¹ÜÀíʼþÑ­»·£¬¾ö¶¨½«Ê¼þ½»¸øÏµÍ³ÄÄЩ¶ÔÏó´¦ÀíºÍÈçºÎ´¦Àí¡£¶øµ±AppÆô¶¯¡¢À´»ØÇл»AppºÍËøÆÁʱ£¬AppµÄ״̬ÈçºÎÇл»ºÍµ÷ÓöÔÓ¦µÄÄÄЩ app delegate¶ÔÏóÀ´´¦Àí¡£

   
2079 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ

ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ