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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÓÅ»¯iOS³ÌÐòÐÔÄܵĶþÊ®Îå¸ö·½·¨
 
 À´Ô´:ParadiseMayCry·¢²¼ÓÚ£º 2016-12-30
  1553  次浏览      27
 

1. ÓÃARC¹ÜÀíÄÚ´æ

ARC(Automatic ReferenceCounting, ×Ô¶¯ÒýÓüÆÊý)ºÍiOS5Ò»Æð·¢²¼£¬Ëü±ÜÃâÁË×î³£¼ûµÄÒ²¾ÍÊǾ­³£ÊÇÓÉÓÚÎÒÃÇÍü¼ÇÊÍ·ÅÄÚ´æËùÔì³ÉµÄÄÚ´æÐ¹Â¶¡£Ëü×Ô¶¯ÎªÄã¹ÜÀíretainºÍreleaseµÄ¹ý³Ì£¬ËùÒÔÄã¾Í²»±ØÈ¥ÊÖ¶¯¸ÉÔ¤ÁË¡£Íüµô´úÂë¶Î½áβµÄrelease¼òÖ±Ïñ¼ÇµÃ³Ô·¹Ò»Ñù¼òµ¥¡£¶øARC»á×Ô¶¯ÔڵײãΪÄã×öÕâЩ¹¤×÷¡£³ýÁ˰ïÄã±ÜÃâÄÚ´æÐ¹Â¶£¬ARC»¹¿ÉÒÔ°ïÄãÌá¸ßÐÔÄÜ£¬ËüÄܱ£Ö¤Êͷŵô²»ÔÙÐèÒªµÄ¶ÔÏóµÄÄÚ´æ¡£

ÏÖÔÚËùÓеÄiOS³ÌÐò¶¼ÓÃARCÁË£¬ÕâÌõ¿ÉÒÔºöÂÔ¡£

2. ÔÚÕýÈ·µÄµØ·½Ê¹Óà reuseIdentifier

Ò»¸ö¿ª·¢Öг£¼ûµÄ´íÎó¾ÍÊÇûÓиøUITableViewCells£¬ UICollectionViewCells£¬ÉõÖÁÊÇUITableViewHeaderFooterViewsÉèÖÃÕýÈ·µÄreuseIdentifier¡£

ΪÁËÐÔÄÜ×îÓÅ»¯£¬table viewÓÃtableView:cellForRowAtIndexPath:Ϊrows·ÖÅäcellsµÄʱºò£¬ËüµÄÊý¾ÝÓ¦¸ÃÖØÓÃ×ÔUITableViewCell¡£Ò»¸ötable viewά³ÖÒ»¸ö¶ÓÁеÄÊý¾Ý¿ÉÖØÓõÄUITableViewCell¶ÔÏó¡£

²»Ê¹ÓÃreuseIdentifierµÄ»°£¬Ã¿ÏÔʾһÐÐtable view¾Í²»µÃ²»ÉèÖÃȫеÄcell¡£Õâ¶ÔÐÔÄܵÄÓ°Ïì¿ÉÊÇÏ൱´óµÄ£¬ÓÈÆä»áʹappµÄ¹ö¶¯ÌåÑé´ó´òÕÛ¿Û¡£

×ÔiOS6Æð£¬³ýÁËUICollectionViewµÄcellsºÍ²¹³äviews£¬ÄãÒ²Ó¦¸ÃÔÚheaderºÍfooter viewsÖÐʹÓÃreuseIdentifiers¡£

ÏëҪʹÓÃreuseIdentifiersµÄ»°£¬ÔÚÒ»¸ötable viewÖÐÌí¼ÓÒ»¸öеÄcellʱÔÚdata source objectÖÐÌí¼ÓÕâ¸ö·½·¨£º

staticNSString *CellIdentifier = @"Cell";  
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:
CellIdentifier forIndexPath:indexPath];

staticNSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

Õâ¸ö·½·¨°ÑÄÇЩÒѾ­´æÔÚµÄcell´Ó¶ÓÁÐÖÐÅųý£¬»òÕßÔÚ±ØÒªÊ±Ê¹ÓÃÏÈǰע²áµÄnib»òÕßclass´´ÔìеÄcell¡£Èç¹ûûÓпÉÖØÓõÄcell£¬ÄãҲûÓÐ×¢²áÒ»¸öclass»òÕßnibµÄ»°£¬Õâ¸ö·½·¨·µ»Ønil¡£

3.¾¡Á¿°ÑviewsÉèÖÃΪ͸Ã÷

Èç¹ûÄãÓÐ͸Ã÷µÄViewsÄãÓ¦¸ÃÉèÖÃËüÃǵÄopaqueÊôÐÔΪYES¡£

Ô­ÒòÊÇÕâ»áʹϵͳÓÃÒ»¸ö×îÓŵķ½Ê½äÖȾÕâЩviews¡£Õâ¸ö¼òµ¥µÄÊôÐÔÔÚIB»òÕß´úÂëÀï¶¼¿ÉÒÔÉ趨¡£

AppleµÄÎĵµ¶ÔÓÚΪͼƬÉèÖÃ͸Ã÷ÊôÐÔµÄÃèÊöÊÇ£º

(opaque)Õâ¸öÊôÐÔ¸øäÖȾϵͳÌṩÁËÒ»¸öÈçºÎ´¦ÀíÕâ¸öviewµÄÌáʾ¡£Èç¹ûÉèΪYES£¬äÖȾϵͳ¾ÍÈÏΪÕâ¸öviewÊÇÍêÈ«²»Í¸Ã÷µÄ£¬ÕâʹµÃäÖȾϵͳÓÅ»¯Ò»Ð©äÖȾ¹ý³ÌºÍÌá¸ßÐÔÄÜ¡£Èç¹ûÉèÖÃΪNO£¬äÖȾϵͳÕý³£µØºÍÆäËüÄÚÈÝ×é³ÉÕâ¸öView¡£Ä¬ÈÏÖµÊÇYES¡£

ÔÚÏà¶Ô±È½Ï¾²Ö¹µÄ»­ÃæÖУ¬ÉèÖÃÕâ¸öÊôÐÔ²»»áÓÐÌ«´óÓ°Ï졣Ȼ¶øµ±Õâ¸öviewǶÔÚscroll viewÀï±ß£¬»òÕßÊÇÒ»¸ö¸´ÔÓ¶¯»­µÄÒ»²¿·Ö£¬²»ÉèÖÃÕâ¸öÊôÐԵϰ»áÔںܴó³Ì¶ÈÉÏÓ°ÏìappµÄÐÔÄÜ¡£

Äã¿ÉÒÔÔÚÄ£ÄâÆ÷ÖÐÓÃDebug\Color Blended LayersÑ¡ÏîÀ´·¢ÏÖÄÄЩviewûÓб»ÉèÖÃΪopaque¡£Ä¿±ê¾ÍÊÇ£¬ÄÜÉèΪopaqueµÄ¾ÍÈ«ÉèΪopaque!

ÕâÀïÓÐÒ»µãÐèҪעÒ⣬ֻҪÊÇÓÐÖÐÎÄ×Ö·ûµÄLabel£¬ÄÄÅÂÄãÉèÖóɲ»Í¸Ã÷£¬Ä£ÄâÆ÷ÖÐÕâ¸öLabelÒÀÈ»»á±äºì£¬Õâ¸ö²Â²âÊÇ×Ö·û»æÖƵÄʱºò³öµÄÎÊÌ⣬Õâ¸öĿǰûÕÒµ½ºÃµÄ½â¾ö·½·¨¡£

4.±ÜÃâ¹ýÓÚÅÓ´óµÄXIB

iOS5ÖмÓÈëµÄStoryboards(·Ö¾µ)ÕýÔÚ¿ìËÙÈ¡´úXIB¡£È»¶øXIBÔÚһЩ³¡¾°ÖÐÈÔÈ»ºÜÓÐÓᣱÈÈçÄãµÄappÐèÒªÊÊÓ¦iOS5֮ǰµÄÉ豸£¬»òÕßÄãÓÐÒ»¸ö×Ô¶¨ÒåµÄ¿ÉÖØÓõÄview,Äã¾Í²»¿É±ÜÃâµØÒªÓõ½ËûÃÇ¡£

Èç¹ûÄã²»µÃ²»XIBµÄ»°£¬Ê¹ËûÃǾ¡Á¿¼òµ¥¡£³¢ÊÔΪÿ¸öControllerÅäÖÃÒ»¸öµ¥¶ÀµÄXIB£¬¾¡¿ÉÄܰÑÒ»¸öView ControllerµÄview²ã´Î½á¹¹·ÖÉ¢µ½µ¥¶ÀµÄXIBÖÐÈ¥¡£

ÐèҪעÒâµÄÊÇ£¬µ±Äã¼ÓÔØÒ»¸öXIBµÄʱºòËùÓÐÄÚÈݶ¼±»·ÅÔÚÁËÄÚ´æÀ°üÀ¨ÈκÎͼƬ¡£Èç¹ûÓÐÒ»¸ö²»»á¼´¿ÌÓõ½µÄview£¬ÄãÕâ¾ÍÊÇÔÚÀ˷ѱ¦¹óµÄÄÚ´æ×ÊÔ´ÁË¡£Storyboards¾ÍÊÇÁíÒ»ÂëʶùÁË£¬storyboard½öÔÚÐèҪʱʵÀý»¯Ò»¸öview controller.

µ±¼ÒÔÚXIBÊÇ£¬ËùÓÐͼƬ¶¼±»chache£¬Èç¹ûÄãÔÚ×öOS X¿ª·¢µÄ»°£¬ÉùÒôÎļþÒ²ÊÇ¡£AppleÔÚÏà¹ØÎĵµÖеļÇÊöÊÇ£º

µ±Äã¼ÓÔØÒ»¸öÒýÓÃÁËͼƬ»òÕßÉùÒô×ÊÔ´µÄnibʱ£¬nib¼ÓÔØ´úÂë»á°ÑͼƬºÍÉùÒôÎļþд½øÄÚ´æ¡£ÔÚOS XÖУ¬Í¼Æ¬ºÍÉùÒô×ÊÔ´±»»º´æÔÚnamed cacheÖÐÒԱ㽫À´Óõ½Ê±»ñÈ¡¡£ÔÚiOSÖУ¬½öͼƬ×ÊÔ´»á±»´æ½ønamed caches¡£È¡¾öÓÚÄãËùÔ򵀮½Ì¨£¬Ê¹ÓÃNSImage »òUIImageµÄimageNamed:·½·¨À´»ñȡͼƬ×ÊÔ´¡£

Õâ¸öÎÊÌâÎÒÉîÓÐÌå»á£¬ÓÃxibдµÄ½çÃæ¼ÓÔØËٶȱÈÖ±½ÓÓôúÂëдµÄÒªÂýºÃ¶à¡£

5.²»Òª×èÈûÖ÷Ïß³Ì

ÓÀÔ¶²»ÒªÊ¹Ö÷Ï̳߳е£¹ý¶à¡£ÒòΪUIKitÔÚÖ÷Ïß³ÌÉÏ×öËùÓй¤×÷£¬äÖȾ£¬¹ÜÀí´¥Ãþ·´Ó¦£¬»ØÓ¦ÊäÈëµÈ¶¼ÐèÒªÔÚËüÉÏÃæÍê³É¡£

һֱʹÓÃÖ÷Ï̵߳ķçÏÕ¾ÍÊÇÈç¹ûÄãµÄ´úÂëÕæµÄblockÁËÖ÷Ị̈߳¬ÄãµÄapp»áʧȥ·´Ó¦¡£

´ó²¿·Ö×è°­Ö÷½ø³ÌµÄÇéÐÎÊÇÄãµÄappÔÚ×öÒ»Ð©Ç£Éæµ½¶ÁдÍⲿ×ÊÔ´µÄI/O²Ù×÷£¬±ÈÈç´æ´¢»òÕßÍøÂç¡£

Äã¿ÉÒÔʹÓÃNSURLConnectionÒì²½µØ×öÍøÂç²Ù×÷:

+ (void)sendAsynchronousRequest:(NSURLRequest *)
request queue:(NSOperationQueue*)
queue completionHandler:
(void (^)(NSURLResponse*, NSData*, NSError*))handler

»òÕßʹÓÃÏñAFNetworkingÕâÑùµÄ¿ò¼ÜÀ´Òì²½µØ×öÕâЩ²Ù×÷¡£

Èç¹ûÄãÐèÒª×öÆäËüÀàÐ͵ÄÐèÒªºÄ·Ñ¾Þ´ó×ÊÔ´µÄ²Ù×÷(±ÈÈçʱ¼äÃô¸ÐµÄ¼ÆËã»òÕß´æ´¢¶Áд)ÄǾÍÓà Grand Central Dispatch£¬»òÕßNSOperationºÍ NSOperationQueues.

ÏÂÃæ´úÂëÊÇʹÓÃGCDµÄÄ£°å

dispatch_async(dispatch_get_global_queue 
(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// switch to a background thread and perform your expensive operation
dispatch_async(dispatch_get_main_queue(), ^{
// switch back to the main thread to update your UI
});
});

·¢ÏÖ´úÂëÖÐÓÐÒ»¸öǶÌ×µÄdispatch_asyncÂð£¿ÕâÊÇÒòΪÈκÎUIKitÏà¹ØµÄ´úÂëÐèÒªÔÚÖ÷Ïß³ÌÉϽøÐС£

6. ÔÚImage ViewsÖе÷ÕûͼƬ´óС

Èç¹ûÒªÔÚUIImageViewÖÐÏÔʾһ¸öÀ´×ÔbundleµÄͼƬ£¬ÄãÓ¦±£Ö¤Í¼Æ¬µÄ´óСºÍUIImageViewµÄ´óСÏàͬ¡£ÔÚÔËÐÐÖÐËõ·ÅͼƬÊǺܺķÑ×ÊÔ´µÄ£¬ÌرðÊÇUIImageViewǶÌ×ÔÚUIScrollViewÖеÄÇé¿öÏ¡£

Èç¹ûͼƬÊÇ´ÓÔ¶¶Ë·þÎñ¼ÓÔØµÄÄã²»ÄÜ¿ØÖÆÍ¼Æ¬´óС£¬±ÈÈçÔÚÏÂÔØÇ°µ÷Õûµ½ºÏÊÊ´óСµÄ»°£¬Äã¿ÉÒÔÔÚÏÂÔØÍê³Éºó£¬×îºÃÊÇÓÃbackground thread£¬Ëõ·ÅÒ»´Î£¬È»ºóÔÚUIImageViewÖÐʹÓÃËõ·ÅºóµÄͼƬ¡£

7. Ñ¡ÔñÕýÈ·µÄCollection

ѧ»áÑ¡Ôñ¶ÔÒµÎñ³¡¾°×îºÏÊʵÄÀà»òÕß¶ÔÏóÊÇд³öÄÜЧ¸ßµÄ´úÂëµÄ»ù´¡¡£µ±´¦ÀícollectionsʱÕâ¾ä»°ÓÈÆäÕýÈ·¡£

һЩ³£¼ûcollectionµÄ×ܽ᣺

Arrays: ÓÐÐòµÄÒ»×éÖµ¡£Ê¹ÓÃindexÀ´lookupºÜ¿ì£¬Ê¹ÓÃvalue lookupºÜÂý£¬²åÈë/ɾ³ýºÜÂý¡£

Dictionaries: ´æ´¢¼üÖµ¶Ô¡£ÓüüÀ´²éÕұȽϿ졣

Sets: ÎÞÐòµÄÒ»×éÖµ¡£ÓÃÖµÀ´²éÕҺܿ죬²åÈë/ɾ³ýºÜ¿ì¡£ÒòΪSetÓõ½Á˹þÏ££¬ËùÒÔ²åÈëɾ³ý²éÕÒËٶȱÈArray¿ìºÜ¶à

8. ´ò¿ªgzipѹËõ

´óÁ¿appÒÀÀµÓÚÔ¶¶Ë×ÊÔ´ºÍµÚÈý·½API£¬Äã¿ÉÄܻῪ·¢Ò»¸öÐèÒª´ÓÔ¶¶ËÏÂÔØXML, JSON, HTML»òÕ߯äËü¸ñʽµÄapp¡£

ÎÊÌâÊÇÎÒÃǵÄÄ¿±êÊÇÒÆ¶¯É豸£¬Òò´ËÄã¾Í²»ÄÜÖ¸ÍûÍøÂç×´¿öÓжàºÃ¡£Ò»¸öÓû§ÏÖÔÚ»¹ÔÚedgeÍøÂ磬ÏÂÒ»·ÖÖÓ¿ÉÄܾÍÇл»µ½ÁË3G¡£²»ÂÛʲô³¡¾°£¬Äã¿Ï¶¨²»ÏëÈÃÄãµÄÓû§µÈÌ«³¤Ê±¼ä¡£

¼õСÎĵµµÄÒ»¸ö·½Ê½¾ÍÊÇÔÚ·þÎñ¶ËºÍÄãµÄappÖдò¿ªgzip¡£Õâ¶ÔÓÚÎÄ×ÖÕâÖÖÄÜÓиü¸ßѹËõÂʵÄÊý¾ÝÀ´Ëµ»áÓиüÏÔÖøµÄЧÓá£

ºÃÏûÏ¢ÊÇ£¬iOSÒѾ­ÔÚNSURLConnectionÖÐĬÈÏÖ§³ÖÁËgzipѹËõ£¬µ±È»AFNetworkingÕâЩ»ùÓÚËüµÄ¿ò¼ÜÒàÈ»¡£ÏñGoogle App EngineÕâÐ©ÔÆ·þÎñÌṩÕßÒ²ÒѾ­Ö§³ÖÁËѹËõÊä³ö¡£

9. ÖØÓúÍÑÓ³Ù¼ÓÔØ(lazy load) Views

¸ü¶àµÄviewÒâζןü¶àµÄäÖȾ£¬Ò²¾ÍÊǸü¶àµÄCPUºÍÄÚ´æÏûºÄ£¬¶ÔÓÚÄÇÖÖǶÌ×Á˺ܶàviewÔÚUIScrollViewÀï±ßµÄapp¸üÊÇÈç´Ë¡£

ÕâÀïÎÒÃÇÓõ½µÄ¼¼ÇɾÍÊÇÄ£·ÂUITableViewºÍUICollectionViewµÄ²Ù×÷:²»ÒªÒ»´Î´´½¨ËùÓеÄsubview£¬¶øÊǵ±ÐèҪʱ²Å´´½¨£¬µ±ËüÃÇÍê³ÉÁËʹÃü£¬°ÑËûÃǷŽøÒ»¸ö¿ÉÖØÓõĶÓÁÐÖС£

ÕâÑùµÄ»°Äã¾ÍÖ»ÐèÒªÔÚ¹ö¶¯·¢Éúʱ´´½¨ÄãµÄviews£¬±ÜÃâÁ˲»»®ËãµÄÄÚ´æ·ÖÅä¡£

´´½¨viewsµÄÄÜЧÎÊÌâÒ²ÊÊÓÃÓÚÄãappµÄÆäËü·½Ãæ¡£ÏëÏóÒ»ÏÂÒ»¸öÓû§µã»÷Ò»¸ö°´Å¥µÄʱºòÐèÒª³ÊÏÖÒ»¸öviewµÄ³¡¾°¡£ÓÐÁ½ÖÖʵÏÖ·½·¨£º

1. ´´½¨²¢Òþ²ØÕâ¸öviewµ±Õâ¸öscreen¼ÓÔØµÄʱºò£¬µ±ÐèҪʱÏÔʾËü£»

2. µ±ÐèҪʱ²Å´´½¨²¢Õ¹Ê¾¡£

ÿ¸ö·½°¸¶¼ÓÐÆäÓÅȱµã¡£ÓõÚÒ»ÖÖ·½°¸µÄ»°ÒòΪÄãÐèÒªÒ»¿ªÊ¼¾Í´´½¨Ò»¸öview²¢±£³ÖËüÖ±µ½²»ÔÙʹÓã¬Õâ¾Í»á¸ü¼ÓÏûºÄÄڴ档Ȼ¶øÕâÒ²»áʹÄãµÄapp²Ù×÷¸üÃô¸ÐÒòΪµ±Óû§µã»÷°´Å¥µÄʱºòËüÖ»ÐèÒª¸Ä±äÒ»ÏÂÕâ¸öviewµÄ¿É¼ûÐÔ¡£

µÚ¶þÖÖ·½°¸ÔòÏà·´-ÏûºÄ¸üÉÙÄڴ棬µ«ÊÇ»áÔÚµã»÷°´Å¥µÄʱºò±ÈµÚÒ»ÖÖÉÔÏÔ¿¨¶Ù¡£

10. Cache, Cache, »¹ÊÇCache!×¢ÒâÄãµÄ»º´æ

Ò»¸ö¼«ºÃµÄÔ­Ôò¾ÍÊÇ£¬»º´æËùÐèÒªµÄ£¬Ò²¾ÍÊÇÄÇЩ²»´ó¿ÉÄܸı䵫ÊÇÐèÒª¾­³£¶ÁÈ¡µÄ¶«Î÷¡£

ÎÒÃÇÄÜ»º´æÐ©Ê²Ã´ÄØ£¿Ò»Ð©Ñ¡ÏîÊÇ£¬Ô¶¶Ë·þÎñÆ÷µÄÏìÓ¦£¬Í¼Æ¬£¬ÉõÖÁ¼ÆËã½á¹û£¬±ÈÈçUITableViewµÄÐиߡ£

NSURLConnectionĬÈϻỺ´æ×ÊÔ´ÔÚÄÚ´æ»òÕß´æ´¢Öиù¾ÝËüËù¼ÓÔØµÄHTTP Headers¡£ÄãÉõÖÁ¿ÉÒÔÊÖ¶¯´´½¨Ò»¸öNSURLRequestÈ»ºóʹËüÖ»¼ÓÔØ»º´æµÄÖµ¡£

ÏÂÃæÊÇÒ»¸ö¿ÉÓõĴúÂë¶Î£¬Äã¿ÉÒÔ¿ÉÒÔÓÃËüȥΪһ¸ö»ù±¾²»»á¸Ä±äµÄͼƬ´´½¨Ò»¸öNSURLRequest²¢»º´æËü£º

+ (NSMutableURLRequest *)imageRequestWithURL:(NSURL *)url {  
NSMutableURLRequest *request =
[NSMutableURLRequest requestWithURL:url];
request.cachePolicy =
NSURLRequestReturnCacheDataElseLoad;
// this will make sure the request always returns the cached image
request.HTTPShouldHandleCookies = NO;
request.HTTPShouldUsePipelining = YES;
[request addValue:@"image/*"forHTTPHeaderField:@"Accept"];
return request;
}

×¢ÒâÄã¿ÉÒÔͨ¹ý NSURLConnection »ñȡһ¸öURL request£¬ AFNetworkingÒ²Ò»ÑùµÄ¡£ÕâÑùÄã¾Í²»±ØÎª²ÉÓÃÕâÌõtip¶ø¸Ä±äËùÓеÄnetworking´úÂëÁË¡£

Èç¹ûÄãÐèÒª»º´æÆäËü²»ÊÇHTTP RequestµÄ¶«Î÷£¬Äã¿ÉÒÔÓÃNSCache¡£

NSCacheºÍNSDictionaryÀàËÆ£¬²»Í¬µÄÊÇϵͳ»ØÊÕÄÚ´æµÄʱºòËü»á×Ô¶¯É¾µôËüµÄÄÚÈÝ¡£

11.ȨºâäÖȾ·½·¨

ÔÚiOSÖпÉÒÔÓкܶ෽·¨×ö³öƯÁÁµÄ°´Å¥¡£Äã¿ÉÒÔÓÃÕû·ùµÄͼƬ£¬¿Éµ÷´óСµÄͼƬ£¬»òÕß¿ÉÒÔÓÃCALayer£¬ CoreGraphicsÉõÖÁOpenGLÀ´»­ËüÃÇ¡£µ±È»Ã¿¸ö²»Í¬µÄ½â¾ö·½·¨¶¼Óв»Í¬µÄ¸´Ôӳ̶ȺÍÏàÓ¦µÄÐÔÄÜ¡£

¼òµ¥À´Ëµ£¬¾ÍÊÇÓÃÊÂÏÈäÖȾºÃµÄͼƬ¸ü¿ìһЩ£¬ÒòΪÈç´ËÒ»À´iOS¾ÍÃâÈ¥ÁË´´½¨Ò»¸öͼƬÔÙ»­¶«Î÷ÉÏȥȻºóÏÔʾÔÚÆÁÄ»ÉϵijÌÐò¡£ÎÊÌâÊÇÄãÐèÒª°ÑËùÓÐÄãÐèÒªÓõ½µÄͼƬ·Åµ½appµÄbundleÀïÃæ£¬ÕâÑù¾ÍÔö¼ÓÁËÌå»ý¨CÕâ¾ÍÊÇʹÓÿɱä´óСµÄͼƬ¸üºÃµÄµØ·½ÁË:Äã¿ÉÒÔʡȥһЩ²»±ØÒªµÄ¿Õ¼ä£¬Ò²²»ÐèÒªÔÙΪ²»Í¬µÄÔªËØ(±ÈÈç°´Å¥)À´×ö²»Í¬µÄͼ¡£

È»¶ø£¬Ê¹ÓÃͼƬҲÒâζ×ÅÄãʧȥÁËʹÓôúÂëµ÷ÕûͼƬµÄ»ú¶¯ÐÔ£¬ÄãÐèÒªÒ»±éÓÖÒ»±é²»¶ÏµØÖØ×öËûÃÇ£¬ÕâÑù¾ÍºÜÀË·Ñʱ¼äÁË£¬¶øÇÒÄãÈç¹ûÒª×öÒ»¸ö¶¯»­Ð§¹û£¬ËäȻÿ·ùͼֻÊÇһЩϸ½ÚµÄ±ä»¯Äã¾ÍÐèÒªºÜ¶àµÄͼƬÔì³Ébundle´óСµÄ²»¶ÏÔö´ó¡£

×ܵÃÀ´Ëµ£¬ÄãÐèҪȨºâÒ»ÏÂÀû±×£¬µ½µ×ÊÇÒªÐÔÄÜÄÜ»¹ÊÇÒªbundle±£³ÖºÏÊʵĴóС¡£

12.´¦ÀíÄڴ澯¸æ

Ò»µ©ÏµÍ³ÄÚ´æ¹ýµÍ£¬iOS»á֪ͨËùÓÐÔËÐÐÖÐapp¡£ÔÚ¹Ù·½ÎĵµÖÐÊÇÕâÑù¼ÇÊö:

Èç¹ûÄãµÄappÊÕµ½ÁËÄڴ澯¸æ£¬Ëü¾ÍÐèÒª¾¡¿ÉÄÜÊͷŸü¶àµÄÄÚ´æ¡£×î¼Ñ·½Ê½ÊÇÒÆ³ý¶Ô»º´æ£¬Í¼Æ¬objectºÍÆäËûһЩ¿ÉÒÔÖØ´´½¨µÄobjectsµÄstrong references.

ÐÒÔ˵ÄÊÇ£¬UIKitÌṩÁ˼¸ÖÖÊÕ¼¯µÍÄڴ澯¸æµÄ·½·¨:

ÔÚapp delegateÖÐʹÓÃapplicationDidReceiveMemoryWarning:µÄ·½·¨

ÔÚÄãµÄ×Ô¶¨ÒåUIViewControllerµÄ×ÓÀà(subclass)Öи²¸ÇdidReceiveMemoryWarning

×¢²á²¢½ÓÊÕ UIApplicationDidReceiveMemoryWarningNotificationµÄ֪ͨ

Ò»µ©ÊÕµ½ÕâÀà֪ͨ£¬Äã¾ÍÐèÒªÊÍ·ÅÈκβ»±ØÒªµÄÄÚ´æÊ¹Óá£

ÀýÈ磬UIViewControllerµÄĬÈÏÐÐΪÊÇÒÆ³ýһЩ²»¿É¼ûµÄview£¬ËüµÄһЩ×ÓÀàÔò¿ÉÒÔ²¹³äÕâ¸ö·½·¨£¬É¾µôһЩ¶îÍâµÄÊý¾Ý½á¹¹¡£Ò»¸öÓÐͼƬ»º´æµÄapp¿ÉÒÔÒÆ³ý²»ÔÚÆÁÄ»ÉÏÏÔʾµÄͼƬ¡£

ÕâÑù¶ÔÄڴ澯±¨µÄ´¦ÀíÊǺܱØÒªµÄ£¬Èô²»ÖØÊÓ£¬ÄãµÄapp¾Í¿ÉÄܱ»ÏµÍ³É±µô¡£

È»¶ø£¬µ±ÄãÒ»¶¨ÒªÈ·ÈÏÄãËùÑ¡ÔñµÄobjectÊÇ¿ÉÒÔ±»ÖØÏÖ´´½¨µÄÀ´ÊÍ·ÅÄÚ´æ¡£Ò»¶¨ÒªÔÚ¿ª·¢ÖÐÓÃÄ£ÄâÆ÷ÖеÄÄÚ´æÌáÐÑÄ£ÄâÈ¥²âÊÔһϡ£

µ±È»£¬ÏÖÔÚiOSÉ豸ÔËÐÐÄÚ´æÔ½À´Ô½´ó£¬ÕâÒ»µãºÜÄѳöÏÖÁË¡£

13.ÖØÓôó¿ªÏú¶ÔÏó

һЩobjectsµÄ³õʼ»¯ºÜÂý£¬±ÈÈçNSDateFormatterºÍNSCalendar¡£È»¶ø£¬ÄãÓÖ²»¿É±ÜÃâµØÐèҪʹÓÃËüÃÇ£¬±ÈÈç´ÓJSON»òÕßXMLÖнâÎöÊý¾Ý¡£

ÏëÒª±ÜÃâʹÓÃÕâ¸ö¶ÔÏóµÄÆ¿¾±Äã¾ÍÐèÒªÖØÓÃËûÃÇ£¬¿ÉÒÔͨ¹ýÌí¼ÓÊôÐÔµ½ÄãµÄclassÀï»òÕß´´½¨¾²Ì¬±äÁ¿À´ÊµÏÖ¡£

×¢ÒâÈç¹ûÄãҪѡÔñµÚ¶þÖÖ·½·¨£¬¶ÔÏó»áÔÚÄãµÄappÔËÐÐʱһֱ´æÔÚÓÚÄÚ´æÖУ¬ºÍµ¥Àý(singleton)ºÜÏàËÆ¡£

ÏÂÃæµÄ´úÂë˵Ã÷ÁËʹÓÃÒ»¸öÊôÐÔÀ´ÑÓ³Ù¼ÓÔØÒ»¸ödate formatter. µÚÒ»´Îµ÷ÓÃʱËü»á´´½¨Ò»¸öеÄʵÀý£¬ÒÔºóµÄµ÷ÓÃÔò½«·µ»ØÒѾ­´´½¨µÄʵÀý£º

// in your .h or inside a class extension  
@property (nonatomic, strong) NSDateFormatter *formatter;
// inside the implementation (.m)
// When you need, just use self.formatter
- (NSDateFormatter *)formatter {
if(!_formatter) {
_formatter = [[NSDateFormatter alloc] init];
_formatter.dateFormat =
@"EEE MMM dd HH:mm:ss Z yyyy";// twitter date format
}
return _formatter;
}

»¹ÐèҪעÒâµÄÊÇ£¬ÆäʵÉèÖÃÒ»¸öNSDateFormatterµÄËٶȲ¶àÊǺʹ´½¨ÐµÄÒ»ÑùÂýµÄ£¡ËùÒÔÈç¹ûÄãµÄappÐèÒª¾­³£½øÐÐÈÕÆÚ¸ñʽ´¦ÀíµÄ»°£¬Äã»á´ÓÕâ¸ö·½·¨Öеõ½²»Ð¡µÄÐÔÄÜÌáÉý¡£

14. ʹÓÃSprite Sheets

Sprite sheet¿ÉÒÔÈÃäÖȾËٶȼӿ죬ÉõÖÁ±È±ê×¼µÄÆÁÄ»äÖȾ·½·¨½ÚÊ¡ÄÚ´æ¡£

15.±ÜÃâ·´¸´´¦ÀíÊý¾Ý

Ðí¶àÓ¦ÓÃÐèÒª´Ó·þÎñÆ÷¼ÓÔØ¹¦ÄÜËùÐèµÄ³£ÎªJSON»òÕßXML¸ñʽµÄÊý¾Ý¡£ÔÚ·þÎñÆ÷¶ËºÍ¿Í»§¶ËʹÓÃÏàͬµÄÊý¾Ý½á¹¹ºÜÖØÒª¡£ÔÚÄÚ´æÖвÙ×÷Êý¾ÝʹËüÃÇÂú×ãÄãµÄÊý¾Ý½á¹¹ÊÇ¿ªÏúºÜ´óµÄ¡£

±ÈÈçÄãÐèÒªÊý¾ÝÀ´Õ¹Ê¾Ò»¸ötable view,×îºÃÖ±½Ó´Ó·þÎñÆ÷È¡array½á¹¹µÄÊý¾ÝÒÔ±ÜÃâ¶îÍâµÄÖмäÊý¾Ý½á¹¹¸Ä±ä¡£

ÀàËÆµÄ£¬Èç¹ûÐèÒª´ÓÌØ¶¨keyÖÐÈ¡Êý¾Ý£¬ÄÇô¾ÍʹÓüüÖµ¶ÔµÄdictionary¡£

ÕâÒ»µãÔÚ´¦Àí´óÁ¿Êý¾ÝµÄʱºò¼«ÎªÖØÒª£¬Óÿռ任ʱ¼äµÄ·½·¨Ò²ÐíÊǼ«ºÃµÄ¡£

16.Ñ¡ÔñÕýÈ·µÄÊý¾Ý¸ñʽ

´ÓappºÍÍøÂç·þÎñ¼ä´«ÊäÊý¾ÝÓкܶ෽°¸£¬×î³£¼ûµÄ¾ÍÊÇJSONºÍXML¡£ÄãÐèҪѡÔñ¶ÔÄãµÄappÀ´Ëµ×îºÏÊʵÄÒ»¸ö¡£

½âÎöJSON»á±ÈXML¸ü¿ìһЩ£¬JSONҲͨ³£¸üС¸ü±ãÓÚ´«Êä¡£´ÓiOS5ÆðÓÐÁ˹ٷ½ÄÚ½¨µÄJSON deserialization¾Í¸ü¼Ó·½±ãʹÓÃÁË¡£

µ«ÊÇXMLÒ²ÓÐXMLµÄºÃ´¦£¬±ÈÈçʹÓÃSAXÀ´½âÎöXML¾ÍÏñ½âÎö±¾µØÎļþÒ»Ñù£¬Äã²»ÐèÏñ½âÎöjsonÒ»ÑùµÈµ½Õû¸öÎĵµÏÂÔØÍê³É²Å¿ªÊ¼½âÎö¡£µ±Äã´¦ÀíºÜ´óµÄÊý¾ÝµÄʱºò¾Í»á¼«´óµØ¼õµÍÄÚ´æÏûºÄºÍÔö¼ÓÐÔÄÜ¡£

ÏÖÔÚ»ù±¾É϶¼ÊÇJSONÁË¡£

17.ÕýÈ·É趨±³¾°Í¼Æ¬

ÔÚViewÀï·Å±³¾°Í¼Æ¬¾ÍÏñºÜ¶àÆäËüiOS±à³ÌÒ»ÑùÓкܶ෽·¨:

ʹÓÃUIColorµÄ colorWithPatternImageÀ´ÉèÖñ³¾°É«£»

ÔÚviewÖÐÌí¼ÓÒ»¸öUIImageView×÷Ϊһ¸ö×ÓView¡£

Èç¹ûÄãʹÓÃÈ«»­·ùµÄ±³¾°Í¼£¬Äã¾Í±ØÐëʹÓÃUIImageViewÒòΪUIColorµÄcolorWithPatternImageÊÇÓÃÀ´´´½¨Ð¡µÄÖØ¸´µÄͼƬ×÷Ϊ±³¾°µÄ¡£ÕâÖÖÇéÐÎÏÂʹÓÃUIImageView¿ÉÒÔ½ÚÔ¼²»ÉÙµÄÄڴ棺

// You could also achieve the same result in Interface Builder

UIImageView *backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background"]];

[self.view addSubview:backgroundView];

Èç¹ûÄãÓÃСͼƽÆÌÀ´´´½¨±³¾°£¬Äã¾ÍÐèÒªÓÃUIColorµÄcolorWithPatternImageÀ´×öÁË£¬Ëü»á¸ü¿ìµØäÖȾҲ²»»á»¨·ÑºÜ¶àÄڴ棺

self.view.backgroundColor = [UIColor colorWithPatternImage:
[UIImage imageNamed:@"background"]];

18. ¼õÉÙʹÓÃWebÌØÐÔ

UIWebViewºÜÓÐÓã¬ÓÃËüÀ´Õ¹Ê¾ÍøÒ³ÄÚÈÝ»òÕß´´½¨UIKitºÜÄÑ×öµ½µÄ¶¯»­Ð§¹ûÊǺܼòµ¥µÄÒ»¼þÊ¡£

µ«ÊÇÄã¿ÉÄÜÓÐ×¢Òâµ½UIWebView²¢²»ÏñÇý¶¯SafariµÄÄÇô¿ì¡£ÕâÊÇÓÉÓÚÒÔJIT compilationÎªÌØÉ«µÄWebkitµÄNitro EngineµÄÏÞÖÆ¡£

ËùÒÔÏëÒª¸ü¸ßµÄÐÔÄÜÄã¾ÍÒªµ÷ÕûÏÂÄãµÄHTMLÁË¡£µÚÒ»¼þÒª×öµÄʾÍÊǾ¡¿ÉÄÜÒÆ³ý²»±ØÒªµÄJavaScript£¬±ÜÃâʹÓùý´óµÄ¿ò¼Ü¡£ÄÜÖ»ÓÃÔ­Éújs¾Í¸üºÃÁË¡£

ÁíÍ⣬¾¡¿ÉÄÜÒì²½¼ÓÔØÀýÈçÓû§ÐÐΪͳ¼ÆscriptÕâÖÖ²»Ó°ÏìÒ³Ãæ±í´ïµÄjavascript¡£

×îºó£¬ÓÀԶҪעÒâÄãʹÓõÄͼƬ£¬±£Ö¤Í¼Æ¬µÄ·ûºÏÄãʹÓõĴóС¡£Ê¹ÓÃSprite sheetÌá¸ß¼ÓÔØËٶȺͽÚÔ¼ÄÚ´æ¡£

19. É趨Shadow Path

ÈçºÎÔÚÒ»¸öView»òÕßÒ»¸ölayerÉϼÓÒ»¸öshadowÄØ£¬QuartzCore¿ò¼ÜÊǺܶ࿪·¢ÕßµÄÑ¡Ôñ£º

UIView *view = [[UIView alloc] init];  
view.layer.shadowOffset = CGSizeMake(-1.0f, 1.0f);
view.layer.shadowRadius = 5.0f;
view.layer.shadowOpacity = 0.6;

¿´ÆðÀ´ºÜ¼òµ¥£¬¶Ô°É¡£¿ÉÊÇ£¬»µÏûÏ¢ÊÇʹÓÃÕâ¸ö·½·¨Ò²ÓÐËüµÄÎÊÌâ¡­ Core Animation²»µÃ²»ÏÈÔÚºǫ́µÃ³öÄãµÄͼÐβ¢¼ÓºÃÒõÓ°È»ºó²ÅäÖȾ£¬Õ⿪ÏúÊǺܴóµÄ¡£

ʹÓÃshadowPathµÄ»°¾Í±ÜÃâÁËÕâ¸öÎÊÌ⣺

view.layer.shadowPath = [[UIBezierPath bezierPathWithRect:view.bounds] CGPath];

ʹÓÃshadow pathµÄ»°iOS¾Í²»±ØÃ¿´Î¶¼¼ÆËãÈçºÎäÖȾ£¬ËüʹÓÃÒ»¸öÔ¤ÏȼÆËãºÃµÄ·¾¶¡£µ«ÎÊÌâÊÇ×Ô¼º¼ÆËãpathµÄ»°¿ÉÄÜÔÚijЩViewÖбȽÏÀ§ÄÑ£¬ÇÒÿµ±viewµÄframe±ä»¯µÄʱºòÄã¶¼ÐèҪȥupdate shadow path.

ÎÒ¸üϲ»¶ÓÃCALayer×Ô¼º»­Ò»¸öÒõÓ°³öÀ´£¬ÕâÑù¿ÉÒÔÉèÖÃÒõÓ°¹âÕ¤»¯£¬½ÚÊ¡´óÁ¿CPUµÄÔËË㣬»µ´¦¾ÍÊDZȽÏÏûºÄÄÚ´æ¡£ÒòΪÈç¹û¸øviewµÄlayerÉèÖùâÕ¤»¯µÄ»°Õû¸öView¶¼»á±äµÃÄ£ºý¡£

20. ÓÅ»¯Table View

Table viewÐèÒªÓкܺõĹö¶¯ÐÔÄÜ£¬²»È»Óû§»áÔÚ¹ö¶¯¹ý³ÌÖз¢ÏÖ¶¯»­µÄ覴á£

ΪÁ˱£Ö¤table viewƽ»¬¹ö¶¯£¬È·±£Äã²ÉÈ¡ÁËÒÔϵĴëÊ©:

ÕýȷʹÓÃreuseIdentifierÀ´ÖØÓÃcells

¾¡Á¿Ê¹ËùÓеÄview opaque£¬°üÀ¨cell×ÔÉí

±ÜÃâ½¥±ä£¬Í¼Æ¬Ëõ·Å£¬ºǫ́ѡÈË

»º´æÐиß

Èç¹ûcellÄÚÏÖʵµÄÄÚÈÝÀ´×Ôweb£¬Ê¹ÓÃÒì²½¼ÓÔØ£¬»º´æÇëÇó½á¹û

ʹÓÃshadowPathÀ´»­ÒõÓ°

¼õÉÙsubviewsµÄÊýÁ¿

¾¡Á¿²»Ê¹ÓÃcellForRowAtIndexPath:£¬Èç¹ûÄãÐèÒªÓõ½Ëü£¬Ö»ÓÃÒ»´ÎÈ»ºó»º´æ½á¹û

ʹÓÃÕýÈ·µÄÊý¾Ý½á¹¹À´´æ´¢Êý¾Ý

ʹÓÃrowHeight, sectionFooterHeightºÍ sectionHeaderHeightÀ´É趨¹Ì¶¨µÄ¸ß£¬²»ÒªÇëÇódelegate

21.Ñ¡ÔñÕýÈ·µÄÊý¾Ý´æ´¢Ñ¡Ïî

µ±´æ´¢´ó¿éÊý¾ÝʱÄã»áÔõô×ö£¿

ÄãÓкܶàÑ¡Ôñ£¬±ÈÈ磺

ʹÓÃNSUerDefaults

ʹÓÃXML, JSON, »òÕß plist

ʹÓÃNSCoding´æµµ

ʹÓÃÀàËÆSQLiteµÄ±¾µØSQLÊý¾Ý¿â

ʹÓà Core Data

NSUserDefaultsµÄÎÊÌâÊÇʲô£¿ËäÈ»ËüºÜniceÒ²ºÜ±ã½Ý£¬µ«ÊÇËüÖ»ÊÊÓÃÓÚСÊý¾Ý£¬±ÈÈçһЩ¼òµ¥µÄ²¼¶ûÐ͵ÄÉèÖÃÑ¡ÏÔÙ´óµãÄã¾ÍÒª¿¼ÂÇÆäËü·½Ê½ÁË

XMLÕâÖֽṹ»¯µµ°¸ÄØ£¿×ÜÌåÀ´Ëµ£¬ÄãÐèÒª¶ÁÈ¡Õû¸öÎļþµ½ÄÚ´æÀïÈ¥½âÎö£¬ÕâÑùÊǺܲ»¾­¼ÃµÄ¡£Ê¹ÓÃSAXÓÖÊÇÒ»¸öºÜÂé·³µÄÊÂÇé¡£

NSCoding£¿²»ÐÒµÄÊÇ£¬ËüÒ²ÐèÒª¶ÁдÎļþ£¬ËùÒÔÒ²ÓÐÒÔÉÏÎÊÌâ¡£

ÔÚÕâÖÖÓ¦Óó¡¾°Ï£¬Ê¹ÓÃSQLite »òÕß Core Data±È½ÏºÃ¡£Ê¹ÓÃÕâЩ¼¼ÊõÄãÓÃÌØ¶¨µÄ²éѯÓï¾ä¾ÍÄÜÖ»¼ÓÔØÄãÐèÒªµÄ¶ÔÏó¡£

ÔÚÐÔÄܲãÃæÀ´½²£¬SQLiteºÍCore DataÊǺÜÏàËÆµÄ¡£ËûÃǵIJ»Í¬ÔÚÓÚ¾ßÌåʹÓ÷½·¨¡£Core Data´ú±íÒ»¸ö¶ÔÏóµÄgraph model£¬µ«SQLite¾ÍÊÇÒ»¸öDBMS¡£AppleÔÚÒ»°ãÇé¿öϽ¨ÒéʹÓÃCore Data£¬µ«ÊÇÈç¹ûÄãÓÐÀíÓɲ»Ê¹ÓÃËü£¬ÄÇô¾ÍȥʹÓøü¼Óµ×²ãµÄSQLite°É¡£

Èç¹ûÄãʹÓÃSQLite£¬Äã¿ÉÒÔÓÃFMDB(https://GitHub.com/ccgus/fmdb)Õâ¸ö¿âÀ´¼ò»¯SQLiteµÄ²Ù×÷£¬ÕâÑùÄã¾Í²»Óû¨ºÜ¶à¾­ÀúÁ˽âSQLiteµÄC APIÁË¡£

23. ʹÓÃAutorelease Pool

NSAutoreleasePool¸ºÔðÊÍ·ÅblockÖеÄautoreleased objects¡£Ò»°ãÇé¿öÏÂËü»á×Ô¶¯±»UIKitµ÷Óᣵ«ÊÇÓÐЩ״¿öÏÂÄãÒ²ÐèÒªÊÖ¶¯È¥´´½¨Ëü¡£

¼ÙÈçÄã´´½¨ºÜ¶àÁÙʱ¶ÔÏó£¬Äã»á·¢ÏÖÄÚ´æÒ»Ö±ÔÚ¼õÉÙÖ±µ½ÕâЩ¶ÔÏó±»releaseµÄʱºò¡£ÕâÊÇÒòΪֻÓе±UIKitÓùâÁËautorelease poolµÄʱºòmemory²Å»á±»ÊÍ·Å¡£ºÃÏûÏ¢ÊÇÄã¿ÉÒÔÔÚÄã×Ô¼ºµÄ@autoreleasepoolÀï´´½¨ÁÙʱµÄ¶ÔÏóÀ´±ÜÃâÕâ¸öÐÐΪ£º

NSArray *urls = <# An array of file URLs #>;  
for(NSURL *url in urls) {
@autoreleasepool {
NSError *error;
NSString *fileContents =
[NSString stringWithContentsOfURL:url encoding:
NSUTF8StringEncoding error:&error];
/* Process the string, creating and autoreleasing more objects. */
}
}

Õâ¶Î´úÂëÔÚÿ´Î±éÀúºóÊÍ·ÅËùÓÐautorelease¶ÔÏó

24. Ñ¡ÔñÊÇ·ñ»º´æÍ¼Æ¬

³£¼ûµÄ´ÓbundleÖмÓÔØÍ¼Æ¬µÄ·½Ê½ÓÐÁ½ÖÖ£¬Ò»¸öÊÇÓÃimageNamed£¬¶þÊÇÓÃimageWithContentsOfFile£¬µÚÒ»ÖֱȽϳ£¼ûÒ»µã¡£

¼ÈÈ»ÓÐÁ½ÖÖÀàËÆµÄ·½·¨À´ÊµÏÖÏàͬµÄÄ¿µÄ£¬ÄÇôËûÃÇÖ®¼äµÄ²î±ðÊÇÊ²Ã´ÄØ£¿

imageNamedµÄÓŵãÊǵ±¼ÓÔØÊ±»á»º´æÍ¼Æ¬¡£imageNamedµÄÎĵµÖÐÕâô˵:Õâ¸ö·½·¨ÓÃÒ»¸öÖ¸¶¨µÄÃû×ÖÔÚϵͳ»º´æÖвéÕÒ²¢·µ»ØÒ»¸öͼƬ¶ÔÏóÈç¹ûËü´æÔڵϰ¡£Èç¹û»º´æÖÐûÓÐÕÒµ½ÏàÓ¦µÄͼƬ£¬Õâ¸ö·½·¨´ÓÖ¸¶¨µÄÎĵµÖмÓÔØÈ»ºó»º´æ²¢·µ»ØÕâ¸ö¶ÔÏó¡£

Ïà·´µÄ£¬imageWithContentsOfFile½ö¼ÓÔØÍ¼Æ¬¡£

ÏÂÃæµÄ´úÂë˵Ã÷ÁËÕâÁ½ÖÖ·½·¨µÄÓ÷¨:

UIImage *img = [UIImage imageNamed:@"myImage"];// caching

// or

UIImage *img = [UIImage imageWithContentsOfFile:@"myImage"];// no caching

ÄÇôÎÒÃÇÓ¦¸ÃÈçºÎÑ¡ÔñÄØ£¿

Èç¹ûÄãÒª¼ÓÔØÒ»¸ö´óͼƬ¶øÇÒÊÇÒ»´ÎÐÔʹÓã¬ÄÇô¾Íû±ØÒª»º´æÕâ¸öͼƬ£¬ÓÃimageWithContentsOfFile×ãÒÓ£¬ÕâÑù²»»áÀË·ÑÄÚ´æÀ´»º´æËü¡£

È»¶ø£¬ÔÚͼƬ·´¸´ÖØÓõÄÇé¿öÏÂimageNamedÊÇÒ»¸öºÃµÃ¶àµÄÑ¡Ôñ¡£

25. ±ÜÃâÈÕÆÚ¸ñʽת»»

Èç¹ûÄãÒªÓÃNSDateFormatterÀ´´¦ÀíºÜ¶àÈÕÆÚ¸ñʽ£¬Ó¦¸ÃСÐÄÒÔ´ý¡£¾ÍÏñÏÈǰÌáµ½µÄ£¬ÈκÎʱºòÖØÓÃNSDateFormatters¶¼ÊÇÒ»¸öºÃµÄʵ¼ù¡£

È»¶ø£¬Èç¹ûÄãÐèÒª¸ü¶àËÙ¶È£¬ÄÇôֱ½ÓÓÃCÊÇÒ»¸öºÃµÄ·½°¸¡£Sam SoffesÓÐÒ»¸ö²»´íµÄÌû×Ó(http://soff.es/how-to-drastically-improve-your-app-with-an-afternoon-and-instruments)ÀïÃæÓÐһЩ¿ÉÒÔÓÃÀ´½âÎöISO-8601ÈÕÆÚ×Ö·û´®µÄ´úÂ룬¼òµ¥ÖØÐ´Ò»Ï¾ͿÉÒÔÄÃÀ´ÓÃÁË¡£

àÅ£¬Ö±½ÓÓÃCÀ´¸ã£¬¿´ÆðÀ´²»´íÁË£¬µ«ÊÇÄãÏàÐÅÂð£¬ÎÒÃÇ»¹ÓиüºÃµÄ·½°¸£¡

Èç¹ûÄã¿ÉÒÔ¿ØÖÆÄãËù´¦ÀíµÄÈÕÆÚ¸ñʽ£¬¾¡Á¿Ñ¡ÔñUnixʱ¼ä´Á¡£Äã¿ÉÒÔ·½±ãµØ´Óʱ¼ä´Áת»»µ½NSDate:

- (NSDate*)dateFromUnixTimestamp:(NSTimeInterval)timestamp {

return[NSDate dateWithTimeIntervalSince1970:timestamp];

}

ÕâÑù»á±ÈÓÃCÀ´½âÎöÈÕÆÚ×Ö·û´®»¹¿ì£¡ÐèҪעÒâµÄÊÇ£¬Ðí¶àweb API»áÒÔ΢ÃëµÄÐÎʽ·µ»ØÊ±¼ä´Á£¬ÒòΪÕâÖÖ¸ñʽÔÚjavascriptÖиü·½±ãʹÓ᣼ÇסÓÃdateFromUnixTimestamp֮ǰ³ýÒÔ1000¾ÍºÃÁË¡£

   
1553 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶Ë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ÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ