±¾·ÖÏíÊÇÃæÏòÓÐÒâÏò´ÓÊÂiOS¿ª·¢µÄ»ï°é¼°Æ»¹û²úÆ·µÄ·¢ÉÕÓÑ£¬Òà»òÊÇÒѾ´ÓÊÂÁËiOSµÄ¿ª·¢Õߣ¬Ïë½øÒ»²½ÌáÉýÕß¡£Èç¹ûÄú¶ÔiOS¿ª·¢Óм«¸ßµÄÐËȤ£¬¿ÉÒÔÓëÎÒÒ»Æð̽ÌÖiOS¿ª·¢£¬Ò»Æðѧϰ£¬¹²Í¬½ø²½¡£Èç¹ûÄúÊÇÁã»ù´¡£¬½¨ÒéÄúÏÈ·ÔÄÎÒ֮ǰ·ÖÏíµÄiOS¿ª·¢·Ö·ÖÖӸ㶨CÓïÑÔϵÁУ¬È»ºóÔÚ¿ªÊ¼Objective
CÓïÑÔµÄѧϰ£¬Èç¹ûÄúÓöµ½ÎÊÌâÒ²¿ÉÒÔÓëÎÒ̽ÌÖ£¬ÁíÍ⽫ÎÞ³¥·ÖÏí×Ô¼ºÕûÀí³öÀ´µÄ´ó¸Å400G iOSѧϰÊÓÆµ¼°Ñ§Ï°×ÊÁÏ£¬¶¼ÊǸɻõŶ£¡

Ò»¡¢category ·ÖÀà
ÔÚC++ÖÐÓÐÇ¿´óµÄ¶àÖØ¼Ì³Ð,¶øÔÚocÖз½·¨¶¼Êǵ¥¼Ì³ÐµÄ,ΪÁËÄ£¿é»¯¿ª·¢,±ãÓÚÍŶӿª·¢,ocÖÐÓÐÆäËûÓïÑÔËùûÓеÄcategory£¨·ÖÀ࣬ÀàÄ¿£¬Àà±ð£©ºÍclass
Exetension£¨ÀàÀ©Õ¹£©µÈÓï·¨£¬¿ÉÒÔÔÚ²»ÐÞ¸ÄÔÀ´ÀàµÄ»ù´¡ÉÏ, ΪÕâ¸öÀàÀ©³äһЩ·½·¨.
CategoryµÄ¸ñʽ
1.ÔÚ.hÎļþÖÐÉùÃ÷Àà±ð
(1)ÐÂÌí¼ÓµÄ·½·¨±ØÐëдÔÚ @interface Óë @endÖ®¼ä
(2)ClassName ÏÖÓÐÀàµÄÀàÃû(ҪΪÄĸöÀàÀ©Õ¹·½·¨) +
(3)CategoryName ´ýÉùÃ÷µÄÀà±ðÃû³Æ
(4)NewMethod ÐÂÌí¼ÓµÄ·½·¨
@interface ClassName (CategoryName) NewMethod; //ÔÚÀà±ðÖÐÌí¼Ó·½·¨ //²»ÔÊÐíÔÚÀà±ðÖÐÌí¼Ó±äÁ¿ @end |
×¢Òâ:
²»ÔÊÐíÔÚÉùÃ÷Àà±ðµÄʱºò¶¨Òå±äÁ¿
ÔÚ.mÎļþÖÐʵÏÖÀà±ð:
£¨1£©Ð·½·¨µÄʵÏÖ±ØÐëдÔÚ@ implementationÓë@endÖ®¼ä
£¨2£©ClassName ÏÖÓÐÀàµÄÀàÃû
£¨3£©CategoryName ´ýÉùÃ÷µÄÀà±ðÃû³Æ
£¨4£©NewMethod ÐÂÌí¼ÓµÄ·½·¨µÄʵÏÖ
categoryʹÓÃ×¢Òâ:
1. ·ÖÀàÖ»ÄÜÔö¼Ó·½·¨, ²»ÄÜÔö¼Ó³ÉÔ±±äÁ¿
2. ·ÖÀàÖÐдpropertyÖ»»áÉú³É·½·¨ÉùÃ÷
3. ·ÖÀà¿ÉÒÔ·ÃÎÊÔÀ´ÀàÖеijÉÔ±±äÁ¿
4. Èç¹û·ÖÀàºÍÔÀ´Àà³öÏÖͬÃûµÄ·½·¨, ÓÅÏȵ÷Ó÷ÖÀàÖеķ½·¨, ÔÀ´ÀàÖеķ½·¨»á±»ºöÂÔ
·ÖÀàµÄ±àÒëµÄ˳Ðò
·½·¨µ÷ÓÃ˳Ðò£¨´Ó¸ßµ½µÍ£© ·ÖÀà ¨C>ÔÀ´Àà ¨C>¸¸Àà
·ÖÀàÓ¦Óó¡¾°£º¿ª·¢Öо³£Ê¹Óõķ½·¨£¬¿ÉÒÔ³é³öÒ»¸ö·ÖÀ࣬ÍŶӿª·¢ÖУ¬¶àÈ˹²Í¬¿ª·¢£¬¿ÉÒÔд¶à¸ö·ÖÀ࣬×îºó½øÐÐÈںϡ£
¶þ¡¢Exetention ÄäÃûÀ©Õ¹
1.ÄäÃûÀ©Õ¹¶¨Òå
ÑÓÕ¹Àà±ðÓÖ³ÆÎªÀ©Õ¹(Extendsion),ExtensionÊÇCategoryµÄÒ»¸öÌØÀý
¿ÉÒÔΪij¸öÀàÀ©³äһЩ˽ÓеijÉÔ±±äÁ¿ºÍ·½·¨Ð´ÔÚ.mÎļþÖÐ
Ó¢ÎÄÃûÊÇClass Extension
2.À©Õ¹Êéд¸ñʽ
ÔÚ.mÎļþÖÐ
@interface ˈ̞ () { int _age; } - (void)say;
@end |
Èý¡¢Block
1.Block¼ò½é
BlockÊÇiOSÖÐÒ»ÖֱȽÏÌØÊâµÄÊý¾ÝÀàÐÍ
BlockÊÇÆ»¹û¹Ù·½ÌرðÍÆ¼öʹÓõÄÊý¾ÝÀàÐÍ, Ó¦Óó¡¾°±È½Ï¹ã·º¡£
BlockÓ¦Óó¡¾°£º
¶¯»
¶àÏß³Ì
¼¯ºÏ±éÀú
ÍøÂçÇëÇ󻨵÷
2.BlockµÄ×÷ÓÃ
ÓÃÀ´±£´æÄ³Ò»¶Î´úÂë, ¿ÉÒÔÔÚÇ¡µ±µÄʱ¼äÔÙÈ¡³öÀ´µ÷ÓÃ
¹¦ÄÜÓеãÀàËÆÓÚº¯ÊýºÍ·½·¨¡£
3.BlockµÄ¶¨Òå¸ñʽ£º
·µ»ØÖµÀàÐÍ (^block±äÁ¿Ãû)(ÐβÎÁбí) = ^(ÐβÎÁбí) {
};
£¨1£©ÎÞ·µ»ØÖµ£¬ÎÞÐβÎ
void(^Myblock)() = ^{ NSLog(@¡±Hello¡±); }; |
(2)Óзµ»ØÖµ£¬ÓÐÐβÎ
int(^MyBlock)(int,int) = ^(int a,int b){ return a +b; }; |
(3)ÎÞ·µ»ØÖµ£¬ÓÐÐβÎ
void(^MyBlock)(int) = ^(int num){ for (int i = 0,i |
Èý¡¢Protocol ÐÒé
1.protocol »ù±¾¸ÅÄî
Protocol·Òë¹ýÀ´, ½Ð×ö¡±ÐÒ顱
(1)ÔÚдjavaµÄʱºò¶¼»áÓнӿÚinterfaceÕâ¸ö¸ÅÄî,½Ó¿Ú¾ÍÊÇÒ»¶Ñ·½·¨µÄÉùÃ÷ûÓÐʵÏÖ,¶øÔÚOCÀïÃæInterfaceÊÇÒ»¸öÀàµÄÍ·ÎļþµÄÉùÃ÷,²¢²»ÊÇÕæÕýÒâÒåÉϵĽӿڵÄÒâ˼,ÔÚOCÖнӿÚÊÇÓÉÒ»¸ö½Ð×öÐÒéµÄprotocolÀ´ÊµÏÖµÄ
protocolËü¿ÉÒÔÉùÃ÷һЩ±ØÐëʵÏֵķ½·¨ºÍÑ¡ÔñʵÏÖ µÄ·½·¨¡£Õâ¸öºÍjavaÊÇÍêÈ«²»Í¬µÄ¡£
2.ProtocolµÄ×÷Óãº
ÓÃÀ´ÉùÃ÷һЩ·½·¨£¬Ò²¾Í˵£¬ Ò»¸öProtocolÊÇÓÉһϵÁеķ½·¨ÉùÃ÷×é³ÉµÄ¡£
3.protocol Óï·¨¸ñʽ
£¨1£©ProtocolµÄ¶¨Òå
@protocol ÐÒéÃû³Æ // ·½·¨ÉùÃ÷Áбí @end |
£¨2£©Àà×ñÊØÐÒé
Ò»¸öÀà¿ÉÒÔ×ñÊØ1¸ö»ò¶à¸öÐÒé
ÈκÎÀàÖ»Òª×ñÊØÁËProtocol,¾ÍÏ൱ÓÚÓµÓÐÁËProtocolµÄËùÓз½·¨ÉùÃ÷.
4.protocolºÍ¼Ì³ÐÇø±ð
¼Ì³ÐÖ®ºóĬÈϾÍÓÐʵÏÖ, ¶øprotocolÖ»ÓÐÉùÃ÷ûÓÐʵÏÖ
ÏàͬÀàÐ͵ÄÀà¿ÉÒÔʹÓü̳Ð, µ«ÊDz»Í¬ÀàÐ͵ÄÀàÖ»ÄÜʹÓÃprotocol
protocol¿ÉÒÔÓÃÓÚ´æ´¢·½·¨µÄÉùÃ÷, ¿ÉÒÔ½«¶à¸öÀàÖй²Í¬µÄ·½·¨³éÈ¡³öÀ´,
ÒÔºóÈÃÕâЩÀà×ñÊØÐÒé¼´¿É¡£
5.ÐÒéÖеÄÁ½¸ö¹Ø¼ü×Ö
ÓÐ2¸ö¹Ø¼ü×Ö¿ÉÒÔ¿ØÖÆ·½·¨ÊÇ·ñҪʵÏÖ(ĬÈÏÊÇ@required£¬ÔÚ´ó¶àÊýÇé¿öÏ£¬ÓÃ;ÔÚÓÚ³ÌÐòÔ±Ö®¼äµÄ½»Á÷)
@required£ºÕâ¸ö·½·¨±ØÐëҪʵÏÖ£¨Èô²»ÊµÏÖ£¬±àÒëÆ÷»á·¢³ö¾¯¸æ£©
@optional£ºÕâ¸ö·½·¨²»Ò»¶¨ÒªÊµÏÖ
6.ÐÒéµÄ¾ÖÏÞÐÔ
ÐÒéÊÇÓÃÀ´ÉùÃ÷Ò»´ó¶ÑµÄ·½·¨£¬²»ÄÜÉùÃ÷³ÉÔ±±äÁ¿£¬Ò²²»ÄÜдʵÏÖ·½·¨£¬¶øÄ³¸öÀà×ñÊØÁËÕâ¸öÐÒé¾Í¿ÉÒÔ½øÐÐÐÒéÖÐÉùÃ÷µÄ·½·¨µÄʵÏÖ£¬ÕâÑùËäÈ»Äܽâ¾öOCµÄµ¥¼Ì³ÐÎÊÌ⣬µ«ÊÇÓÐÀàÐ͵ÄÏÞÖÆ£¬²»Äܹ»¸üºÃµÄ×öµ½³ÌÐòµÄÀ©Õ¹ÐÔ£¬ÄÇôÔÚÐÒéµÄ»ù´¡ÉÏͨ¹ýʲôÄܹ»¸ü¾ßÀ©Õ¹ÐÔÄØ£¿´ð°¸ÊÇ¡ª¡ª
´úÀí¡£
7.ÐÒéµÄ×¢ÒâÊÂÏî
£¨1£©ÐÒéÖ»ÄÜÉùÃ÷·½·¨, ²»ÄÜÉùÃ÷ÊôÐÔ
£¨2£©¸¸Àà×ñÊØÁËij¸öÐÒé, ÄÇô×ÓÀàÒ²»á×Ô¶¯×ñÊØÕâ¸öÐÒé
£¨3£©ÔÚOCÖÐÒ»¸öÀà¿ÉÒÔ×ñÊØ1¸ö»ò¶à¸öÐÒé
×¢Òâ: OCÖеÄÀàÖ»ÄÜÓÐÒ»¸ö¸¸Àà, Ò²¾ÍÊÇ˵OCÖ»Óе¥¼Ì³Ð
£¨4£©OCÖеÄÐÒéÓÖ¿ÉÒÔ×ñÊØÆäËüÐÒé, Ö»ÒªÒ»¸öÐÒé×ñÊØÁËÆäËüÐÒé, ÄÇôÕâ¸öÐÒéÖоͻá×Ô¶¯°üº¬ÆäËüÐÒéµÄÉùÃ÷¡£
8.ÐÒéµÄÓ¦Óó¡¾°¼°×¢Òâµã
£¨1£©×öÀàÐÍÏÞ¶¨
ÀàÐÍÏÞ¶¨¾ÍÊÇÏÞ¶¨Ò»¸öÀà±ØÐë×ñÊØÄ³¸öÐÒé
Êý¾ÝÀàÐÍ<ÐÒéÃû³Æ> ±äÁ¿Ãû
@proterty(nonatomic , strong)dog< DogRunning > *dog; |
£¨2£©ÀàÐÍÏÞ¶¨µÄ×¢Òâµã
1.ÀàÐÍÏÞ¶¨ÊÇдÔÚÊý¾ÝÀàÐ͵ÄÓұߵÄ
2.ËäÈ»ÔÚ½ÓÊÜijһ¸ö¶ÔÏóµÄʱºò, ¶ÔÕâ¸ö¶ÔÏó½øÐÐÁËÀàÐÍÏÞ¶¨(ÏÞ¶¨Ëü±ØÐëʵÏÖij¸öÐÒé),
3µ«ÊDz¢²»Òâζ×ÅÕâ¸ö¶ÔÏó¾ÍÕæÕýµÄʵÏÖÁ˸÷½·¨. ËùÒÔÿ´ÎÔÚµ÷ÓöÔÏóµÄÐÒé·½·¨Ê±Ó¦¸Ã½øÐÐÒ»´ÎÑéÖ¤
if([self.dag respondsToSelect:@selector(run)]){ [self.dog run]; } |
ËÄ¡¢Î¯ÍдúÀí
1.ʲôÊÇÉè¼ÆÄ£Ê½£¿
ÔÚ¼ÆËã»ú±à³ÌÓïÑÔÖÐÓÐ32ÖÖÉè¼ÆÄ£Ê½£¨Design pattern£©ÊÇÒ»Ì×±»·´¸´Ê¹ÓᢶàÊýÈËÖªÏþµÄ¡¢¾¹ý·ÖÀà±àÄ¿µÄ¡¢´úÂëÉè¼Æ¾ÑéµÄ×ܽᡣʹÓÃÉè¼ÆÄ£Ê½ÊÇΪÁË¿ÉÖØÓôúÂë¡¢ÈôúÂë¸üÈÝÒ×±»ËûÈËÀí½â¡¢±£Ö¤´úÂë¿É¿¿ÐÔ¡£ºÁÎÞÒÉÎÊ£¬Éè¼ÆÄ£Ê½ÓÚ¼ºÓÚËûÈËÓÚϵͳ¶¼ÊǶàÓ®µÄ£»Éè¼ÆÄ£Ê½Ê¹´úÂë±àÖÆÕæÕý¹¤³Ì»¯£»Éè¼ÆÄ£Ê½ÊÇÈí¼þ¹¤³ÌµÄ»ùʯÂöÂ磬Èçͬ´óÏõĽṹһÑù£¬ÔÚiOSÖг£ÓõÄʵ¼ÊģʽΪ£º´úÀí·½·¨£¬MVCģʽ£¬MVVCģʽ£¬µ¥ÀýģʽµÈ¡£
2.´úÀíÉè¼ÆÄ£Ê½
´úÀíģʽÊÇiOS¿ª·¢Öзdz£ÖØÒªµÄÒ»ÖÖÉè¼ÆÄ£Ê½£¬ÔÚUIÖÐÓõÄ×î¶à£¬ÓÐÒÔÏÂÁ½ÖÖÇé¿ö£º
£¨1£©µ±¶ÔÏóA·¢ÉúÁËһЩÐÐΪ,Ïë¸æÖª¶ÔÏóB(ÈöÔÏóB³ÉΪ¶ÔÏóAµÄ´úÀí¶ÔÏó)¶ÔÏóBÏë¼àÌý¶ÔÏóAµÄһЩÐÐΪ(ÈöÔÏóB³ÉΪ¶ÔÏóAµÄ´úÀí¶ÔÏó)
£¨2£©µ±¶ÔÏóAÎÞ·¨´¦ÀíijЩÐÐΪµÄʱºò,ÏëÈöÔÏóB°ïæ´¦Àí(ÈöÔÏóB³ÉΪ¶ÔÏóAµÄ´úÀí¶ÔÏó)
3.´úÀí±àд¹æ·¶
£¨1£©Ò»°ã´úÀíÊôÓÚË£¬¾ÍдÔÚ˵ÄÍ·ÎļþÖж¨Òå¡£
£¨2£©ÐÒéµÄÃû³ÆÒ»°ãÒÔËûµÃÊôÐÔµÄÄǸöÀàµÄÀàÃû¿ªÍ·£¬ºóÃæ¸úÉÏProtocol»òÕßDelegate¡£
£¨3£©ÐÒéÖеķ½·¨Ãû³ÆÒ»°ãÒÔÐÒéµÄÃû³ÆProtocol֮ǰµÄ×÷Ϊ¿ªÍ·¡£
4.½ÓÊÜ×ñÊØÐÒéµÄ´úÀí¶ÔÏ󹨼ü×Ö
id¹Ø¼ü×Ö½ÓÊÜ×ñÊØÐÒéµÄ´úÀí
@property(nonatomic,weak)id< DogDelegate>dog; |
5.ʵÏÖ´úÀíµÄ²½Öè
·¢³ö´úÀíÕߣº
£¨1£©ÉùÃ÷Ò»¸öÀࣺ @class ÀàÃû
£¨2£©¶¨Òå´úÀíÐÒé
£¨3£©½«´úÀí×÷ΪÊôÐÔ£¬ÀàÐÍÏÞ¶¨´úÀí×ñÊØÐÒé
£¨4£©ÉùÃ÷·½·¨£¬·½·¨Àïµ÷ÓôúÀí£¬µ÷ÓôúÀíʵÏÖµÄÐÒé·½·¨
½ÓÊÜ´úÀíÕß
£¨5£©´øÈë´úÀí
£¨6£©×ñÊØ´úÀí
£¨7£©ÊµÏÖÐÒéÖеķ½·¨
·¢³öµÄ´úÀíÕß
£¨8£©ÊµÏÖµ÷ÓôúÀíÕߵķ½·¨
ÅжϴúÀíÊÇ·ñʵÏÖÁËÐÒéÖеķ½·¨
Èç¹û´úÀíʵÏÖÁË´úÀíÖеķ½·¨£¬¾Íµ÷ÓÃ
if ([self.delegate respondsToSelector:@selector(eat:)]) { [self.delegate eat:self]; } |
@classÓë#importµÄÇø±ð£¬Á½¸öµã:
(1)×÷ÓÃÉϵÃÇø±ð:
¡¤#import»á°üº¬ÒýÓÃÀàµÄËùÓÐÐÅÏ¢(ÄÚÈÝ),°üÀ¨ÒýÓÃÀàµÄ±äÁ¿ºÍ·½·¨
.@class½ö½ö¸æËß±àÒëÆ÷ÓÐÕâôһ¸öÀà,¾ßÌåÕâ¸öÀàÓÐʲôÐÅÏ¢,Íê²»Öª
(2 )ЧÂÊÉϵÃÇø±ð.
Èç¹ûÓÐÉϰٸöÍ·Îļþ¶¼#importÁËͬһ¸öÎļþ,»òÕßÕâЩÎļþÒÀ´Î±»#import,ÄÇôһµ©×ʼµÄÎļþÓи͝,ºóÃæÒýÓõ½Õâ¸öÎļþµÄËùÓÐÀà¶¼ÐèÒªÖØÐ±àÒëÒ»±ä,ЧÂʷdz£µÍ¡£
|