ǰÑÔ
ÎÒÃÇÔÚ 2013 Äê 11 Ô·ݿªÊ¼Ð´Õâ±¾Ê飬×î³õµÄÄ¿±êÊÇÌṩһ·ÝÈçºÎ±àд¸É¾»Æ¯ÁÁµÄ
Objective-C ´úÂëµÄÖ¸ÄÏ£ºÏÖÔÚËäÈ»ÓкܶàÖ¸ÄÏ£¬µ«ÊÇËüÃǶ¼ÊÇÓÐһЩÎÊÌâµÄ¡£ÎÒÃDz»Ïë½éÉÜһЩËÀ°åµÄ¹æ¶¨£¬ÎÒÃÇÏëÌṩһ¸öÔÚ¿ª·¢ÕßÃÇÖ®¼äд¸üÒ»ÖµĴúÂëµÄ;¾¶¡£ËæÊ±¼äµÄÍÆÒÆ£¬Õâ±¾Ê鿪ʼתÏò½éÉÜÈçºÎÉè¼ÆºÍ¹¹½¨ÓÅÐãµÄ´úÂë¡£
Õâ±¾ÊéµÄ¹ÛµãÊÇ´úÂë²»½öÊÇ¿ÉÒÔ±àÒëµÄ£¬Í¬Ê±Ó¦¸ÃÊÇ ¡°ÓÐЧ¡± µÄ¡£ºÃµÄ´úÂëÓÐÒ»Ð©ÌØÐÔ£º¼òÃ÷£¬×ÔÎÒ½âÊÍ£¬ÓÅÐãµÄ×éÖ¯£¬Á¼ºÃµÄÎĵµ£¬Á¼ºÃµÄÃüÃû£¬ÓÅÐãµÄÉè¼ÆÒÔ¼°¿ÉÒÔ±»¾Ã¾¿¼Ñé¡£
±¾ÊéµÄÒ»¸öÀíÄîÊÇÊÇ´úÂëµÄÇåÎúÐÔÓÅÏÈÓÚÐÔÄÜ£¬Í¬Ê±²ûÊöΪʲôӦ¸ÃÕâô×ö¡£
ËäÈ»ËùÓеĴúÂë¶¼ÊÇ Objective-C дµÄ£¬µ«ÊÇһЩÖ÷ÌâÊÇͨÓõ쬲¢ÇÒ¶ÀÁ¢ÓÚ±à³ÌÓïÑÔ¡£
Swift
ÔÚ 2014 Äê 6 Ô 6 ÈÕ£¬Æ»¹û·¢²¼ÁËÃæÏò iOS ºÍ Mac ¿ª·¢µÄÐÂÓïÑÔ£º
Swift¡£
Õâ¸öÐÂÓïÑÔÓë Objective-C ½ØÈ»²»Í¬¡£ËùÒÔ£¬ÎÒÃǸıäÁËдÕâ±¾ÊéµÄ¼Æ»®¡£ÎÒÃǾö¶¨·¢²¼Õâ±¾Ê鵱ǰµÄ״̬£¬¶ø²»ÊǼÌÐøÊéдÎÒÃÇÔÀ´¼Æ»®Ð´ÏÂÈ¥µÄÖ÷Ìâ¡£
Objective-C ûÓÐÏûʧ£¬µ«ÊÇÏÖÔÚÓÃÒ»¸öÂýÂýʧȥ¹Ø×¢µÄÓïÑÔÀ´¼ÌÐøÐ´Õâ±¾Êé²¢²»ÊÇÒ»¸öÃ÷ÖǵÄÑ¡Ôñ¡£
¹±Ï׸øÉçÇø
ÎÒÃǽ«Õâ±¾ÊéÃâ·Ñ·¢²¼²¢ÇÒ¹±Ï׸øÉçÇø£¬ÒòΪÎÒÃÇÏ£ÍûÌṩ¸ø¶ÁÕßһЩÓмÛÖµµÄÄÚÈÝ¡£Èç¹ûÄãÄÜѧµ½ÖÁÉÙÒ»Ìõ×î¼Ñʵ¼ù£¬ÎÒÃǵÄÄ¿µÄ¾Í´ïµ½ÁË¡£
ÎÒÃÇÒѾ·Ç³£ÓÃÐĵشòÄ¥ÁËÕâЩÎÄ×Ö£¬µ«ÊÇÈÔÈ»¿ÉÄÜÓÐһЩƴд»òÕ߯äËû´íÎó¡£ÎÒÃǷdz£Ï£Íû¶ÁÕ߸øÎÒÃÇÒ»¸ö·´À¡»òÕß½¨Ò飬ÒÔÀ´¸ÄÉÆ±¾Êé¡£ËùÒÔÈç¹ûÓÐʲôÎÊÌâµÄ»°£¬ÇëÁªÏµÎÒÃÇ¡£ÎÒÃǷdz£»¶Ó¸÷ÖÖ
pull-request¡£
Ìõ¼þÓï¾ä
ΪÁ˱ÜÃâ´íÎó£¬Ìõ¼þÓï¾äÌåÓ¦¸Ã×ÜÊDZ»´óÀ¨ºÅ°üΧ£¬¼´Ê¹¿ÉÒÔ²»ÕâÑù×ö£¨±ÈÈ磬Ìõ¼þÓï¾äÌåÖ»ÓÐÒ»ÐÐÄÚÈÝ£©¡£¿ÉÄܵĴíÎóÊÇ£º¶à¼ÓÁ˵ڶþÐУ¬²¢ÇÒÎóÒÔΪËüÊÇ
if Óï¾äÌåÀïÃæµÄ¡£´ËÍ⣬¸üΣÏÕµÄÊÇ£¬Èç¹û°Ñ if Óï¾äÌåÀïµÄÒ»ÐÐ×¢Ê͵ôÁË£¬Ö®ºóµÄÒ»ÐдúÂë»á³ÉΪ if
Óï¾äÀïµÄ´úÂë¡£
ÍÆ¼ö:
if (!error) { return success; } |
²»ÍƼö:
if (!error) return success;
|
»òÕß
if (!error) return success;
|
ÔÚ 2014Äê2Ô ƻ¹ûµÄ SSL/TLS ʵÏÖÀïÃæ·¢ÏÖÁËÖªÃûµÄ goto fail ´íÎó¡£
´úÂëÔÚÕâÀ
static OSStatus SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams, uint8_t *signature, UInt16 signatureLen) { OSStatus err; ...
if ((err = SSLHashSHA1.update(&hashCtx,
&serverRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams))
!= 0)
goto fail;
goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut))
!= 0)
goto fail;
...
fail:
SSLFreeBuffer(&signedHashes);
SSLFreeBuffer(&hashCtx);
return err;
} |
ÏÔ¶øÒ×¼û£¬ÕâÀïÓÐûÓÐÀ¨ºÅ°üΧµÄ2ÐÐÁ¬ÐøµÄ goto fail; ¡£ÎÒÃǵ±È»²»Ï£Íûд³öÉÏÃæµÄ´úÂëµ¼Ö´íÎó¡£
´ËÍ⣬ÔÚÆäËûÌõ¼þÓï¾äÀïÃæÒ²Ó¦¸Ã°´ÕÕÕâÖÖ·ç¸ñͳһ£¬ÕâÑù¸ü±ãÓÚ¼ì²é¡£
ÓÈ´ï±í´ïʽ
²»ÒªÊ¹ÓÃÓÈ´ï±í´ïʽ¡£ÓÈ´ï±í´ïʽÊÇÖ¸£¬ÄÃÒ»¸ö³£Á¿È¥ºÍ±äÁ¿±È½Ï¶ø²»ÊÇÄñäÁ¿È¥ºÍ³£Á¿±È½Ï¡£Ëü¾ÍÏñÊÇÔÚ±í´ï ¡°À¶É«ÊDz»ÊÇÌì¿ÕµÄÑÕÉ«¡±
»òÕß ¡°¸ß¸öÊDz»ÊÇÕâ¸öÄÐÈ˵ÄÊôÐÔ¡± ¶ø²»ÊÇ ¡°Ìì¿ÕÊDz»ÊÇÀ¶µÄ¡± »òÕß ¡°Õâ¸öÄÐÈËÊDz»ÊǸ߸ö×ӵġ±
ÍÆ¼ö:
if ([myValue isEqual:@42]) { ...
|
²»ÍƼö:
if ([@42 isEqual:myValue]) { ...
|
nil ºÍ BOOL ¼ì²é
ÀàËÆÓÚ Yoda ±í´ïʽ£¬nil ¼ì²éµÄ·½Ê½Ò²ÊÇ´æÔÚÕùÒéµÄ¡£Ò»Ð© notous
¿âÏñÕâÑù¼ì²é¶ÔÏóÊÇ·ñΪ nil£º
if (nil == myValue) { ...
|
»òÐíÓÐÈË»áÌá³öÕâÊÇ´íµÄ£¬ÒòΪÔÚ nil ×÷Ϊһ¸ö³£Á¿µÄÇé¿öÏ£¬ÕâÑù×ö¾ÍÏñ
Yoda ±í´ïʽÁË¡£ µ«ÊÇһЩ³ÌÐòÔ±Õâô×öµÄÔÒòÊÇΪÁ˱ÜÃâµ÷ÊÔµÄÀ§ÄÑ£¬¿´ÏÂÃæµÄ´úÂ룺
if (myValue == nil) { ...
|
Èç¹û³ÌÐòÔ±Çôí³ÉÕâÑù£º
ÕâÊǺϷ¨µÄÓï¾ä£¬µ«ÊǼ´Ê¹ÄãÊÇÒ»¸ö·á¸»¾ÑéµÄ³ÌÐòÔ±£¬¼´Ê¹¶¢×ÅÑÛ¾¦ÇÆÉϺöà±éÒ²ºÜÄѵ÷ÊÔ³ö´íÎó¡£µ«ÊÇÈç¹û°Ñ
nil ·ÅÔÚ×ó±ß£¬ÒòΪËü²»Äܱ»¸³Öµ£¬ËùÒԾͲ»»á·¢ÉúÕâÑùµÄ´íÎó¡£ Èç¹û³ÌÐòÔ±ÕâÑù×ö£¬Ëû/Ëý¾Í¿ÉÒÔÇáËɼì²é³ö¿ÉÄܵÄÔÒò£¬±ÈÒ»±é±é¼ì²éÇÃϵĴúÂëÒªºÃºÜ¶à¡£
ΪÁ˱ÜÃâÕâÐ©Ææ¹ÖµÄÎÊÌ⣬¿ÉÒÔÓøÐ̾ºÅÀ´×÷ΪÔËËã·û¡£ÒòΪ nil ÊÇ ½âÊ͵½ NO£¬ËùÒÔû±ØÒªÔÚÌõ¼þÓï¾äÀïÃæ°ÑËüºÍÆäËûÖµ±È½Ï¡£Í¬Ê±£¬²»ÒªÖ±½Ó°ÑËüºÍ
YES ±È½Ï£¬ÒòΪ YES µÄ¶¨ÒåÊÇ 1£¬ ¶ø BOOL ÊÇ 8 bitµÄ£¬Êµ¼ÊÉÏÊÇ char ÀàÐÍ¡£
ÍÆ¼ö:
if (someObject) { ... if (![someObject boolValue]) { ... if (!someObject) { ... |
²»ÍƼö:
if (someObject == YES) { ... // Wrong if (myRawValue == YES) { ... // Never do this. if ([someObject boolValue] == NO) { ... |
ͬʱÕâÑùÒ²ÄÜÌá¸ßÒ»ÖÂÐÔ£¬ÒÔ¼°ÌáÉý¿É¶ÁÐÔ¡£
»Æ½ð´óµÀ
µ±±àдÌõ¼þÓï¾äµÄʱºò£¬×ó±ßµÄ´úÂë¼ä¾àÓ¦¸ÃÊÇÒ»¸ö¡°»Æ½ð¡±»òÕß¡°¿ìÀÖ¡±µÄ´óµÀ¡£ ÕâÊÇ˵£¬²»ÒªÇ¶Ì× if Óï¾ä¡£¶à¸ö
return Óï¾äÊÇ OK µÄ¡£ÕâÑù¿ÉÒÔ±ÜÃâ Cyclomatic ¸´ÔÓÐÔ (ÒëÕß×¢: https://en.wikipedia.org/wiki/Cyclomatic_complexity)£¬²¢ÇÒÈôúÂë¸ü¼ÓÈÝÒ×ÔĶÁ¡£ÒòΪÄãµÄ·½·¨µÄÖØÒª²¿·ÖûÓÐǶÌ×ÔÚ·ÖÖ§ÉÏ£¬Äã¿ÉÒÔºÜÇå³þµØÕÒµ½Ïà¹ØµÄ´úÂë¡£
ÍÆ¼ö:
- (void)someMethod { if (![someOther boolValue]) { return; }
//Do something important
} |
²»ÍƼö:
- (void)someMethod { if ([someOther boolValue]) { //Do something important } } |
¸´Ôӵıí´ïʽ
µ±ÄãÓÐÒ»¸ö¸´Ô if ×Ó¾äµÄʱºò£¬ÄãÓ¦¸Ã°ÑËüÃÇÌáÈ¡³öÀ´¸³¸øÒ»¸ö BOOL
±äÁ¿£¬ÕâÑù¿ÉÒÔÈÃÂß¼¸üÇå³þ£¬¶øÇÒÈÃÿ¸ö×Ó¾äµÄÒâÒåÌåÏÖ³öÀ´¡£
BOOL nameContainsSwift = [sessionName containsString:@"Swift"]; BOOL isCurrentYear = [sessionDateCompontents year] == 2014; BOOL isSwiftSession = nameContainsSwift && isCurrentYear;
if (isSwiftSession) {
// Do something very cool
} |
ÈýÔªÔËËã·û
ÈýÔªÔËËã·û ? Ó¦¸ÃÖ»ÓÃÔÚËüÄÜÈôúÂë¸ü¼ÓÇå³þµÄµØ·½¡£ Ò»¸öÌõ¼þÓï¾äµÄËùÓеıäÁ¿Ó¦¸ÃÊÇÒѾ±»ÇóÖµÁ˵ġ£ÀàËÆ
if Óï¾ä£¬¼ÆËã¶à¸öÌõ¼þ×Ó¾äͨ³£»áÈÃÓï¾ä¸ü¼ÓÄÑÒÔÀí½â¡£»òÕß¿ÉÒÔ°ÑËüÃÇÖØ¹¹µ½ÊµÀý±äÁ¿ÀïÃæ¡£
ÍÆ¼ö:
²»ÍƼö:
result = a > b ? x = c > d ? c : d : y;
|
µ±ÈýÔªÔËËã·ûµÄµÚ¶þ¸ö²ÎÊý£¨if ·ÖÖ§£©·µ»ØºÍÌõ¼þÓï¾äÖÐÒѾ¼ì²éµÄ¶ÔÏóÒ»ÑùµÄ¶ÔÏóµÄʱºò£¬ÏÂÃæµÄ±í´ï·½Ê½¸üÁéÇÉ£º
ÍÆ¼ö:
result = object ? : [self createObject];
|
²»ÍƼö:
result = object ? object : [self createObject];
|
´íÎó´¦Àí
µ±·½·¨·µ»ØÒ»¸ö´íÎó²ÎÊýµÄÒýÓõÄʱºò£¬¼ì²é·µ»ØÖµ£¬¶ø²»ÊÇ´íÎóµÄ±äÁ¿¡£
ÍÆ¼ö:
NSError *error = nil; if (![self trySomethingWithError:&error]) { // Handle Error } |
´ËÍ⣬һЩƻ¹ûµÄ API Ôڳɹ¦µÄÇé¿öÏ»á¶Ô error ²ÎÊý£¨Èç¹ûËü·Ç NULL£©Ð´ÈëÀ¬»øÖµ£¨garbage
values£©£¬ËùÒÔÈç¹û¼ì²é error µÄÖµ¿ÉÄܵ¼Ö´íÎó £¨ÉõÖÁ±ÀÀ££©¡£
CaseÓï¾ä
³ý·Ç±àÒëÆ÷Ç¿ÖÆÒªÇó£¬À¨ºÅÔÚ case Óï¾äÀïÃæÊDz»±ØÒªµÄ¡£µ«Êǵ±Ò»¸ö case °üº¬Á˶àÐÐÓï¾äµÄʱºò£¬ÐèÒª¼ÓÉÏÀ¨ºÅ¡£
switch (condition) { case 1: // ... break; case 2: { // ... // Multi-line example using braces break; } case 3: // ... break; default: // ... break; } |
ÓÐʱºò¿ÉÒÔʹÓà fall-through ÔÚ²»Í¬µÄ case ÀïÃæÖ´ÐÐͬһ¶Î´úÂë¡£Ò»¸ö fall-through
ÊÇÖ¸ÒÆ³ý case Óï¾äµÄ ¡°break¡± È»ºóÈÃÏÂÃæµÄ case ¼ÌÐøÖ´ÐС£
switch (condition) { case 1: case 2: // code executed for values 1 and 2 break; default: // ... break; } |
µ±ÔÚ switch Óï¾äÀïÃæÊ¹ÓÃÒ»¸ö¿Éö¾ÙµÄ±äÁ¿µÄʱºò£¬default ÊDz»±ØÒªµÄ¡£±ÈÈ磺
switch (menuType) { case ZOCEnumNone: // ... break; case ZOCEnumValue1: // ... break; case ZOCEnumValue2: // ... break; } |
´ËÍ⣬ΪÁ˱ÜÃâʹÓÃĬÈ쵀 case£¬Èç¹ûеÄÖµ¼ÓÈëµ½ enum£¬³ÌÐòÔ±»áÂíÉÏÊÕµ½Ò»¸ö warning
֪ͨ
Enumeration value 'ZOCEnumValue3' not handled in switch.£¨Ã¶¾ÙÀàÐÍ 'ZOCEnumValue3' ûÓб» switch ´¦Àí£© |
ö¾ÙÀàÐÍ
µ±Ê¹Óà enum µÄʱºò£¬½¨ÒéʹÓÃеĹ̶¨µÄ»ù´¡ÀàÐͶ¨Ò壬ÒòËüÓиüÇ¿´óµÄµÄÀàÐͼì²éºÍ´úÂ벹ȫ¡£ SDK
ÏÖÔÚÓÐÒ»¸ö ºêÀ´¹ÄÀøºÍ´Ù½øÊ¹Óù̶¨ÀàÐͶ¨Òå - NS_ENUM()
Àý×Ó:
typedef NS_ENUM(NSUInteger, ZOCMachineState) { ZOCMachineStateNone, ZOCMachineStateIdle, ZOCMachineStateRunning, ZOCMachineStatePaused }; |
̟̞
ͨÓõÄÔ¼¶¨
¾¡¿ÉÄÜ×ñÊØ Apple µÄÃüÃûÔ¼¶¨£¬ÓÈÆäÊÇºÍ ÄÚ´æ¹ÜÀí¹æÔò (NARC) Ïà¹ØµÄµØ·½¡£
ÍÆ¼öʹÓó¤µÄ¡¢ÃèÊöÐԵķ½·¨ºÍ±äÁ¿Ãû
ÍÆ¼ö:
UIButton *settingsButton; |
²»ÍƼö:
³£Á¿
³£Á¿Ó¦¸ÃʹÓÃÍÕ·åÃüÃû·¨£¬²¢ÇÒΪÁËÇå³þ£¬Ó¦¸ÃÓÃÏà¹ØµÄÀàÃû×÷Ϊǰ׺¡£
ÍÆ¼ö:
static const NSTimeInterval ZOCSignInViewControllerFadeOutAnimationDuration = 0.4; |
²»ÍƼö:
static const NSTimeInterval fadeOutTime = 0.4; |
³£Á¿Ó¦¸Ã¾¡Á¿Ê¹ÓÃÒ»ÖµÄ×Ö·û´®×ÖÃæÖµ»òÕßÊý×Ö£¬ÕâÑù±ãÓÚ¾³£Óõ½µÄʱºò¸´Ó㬲¢ÇÒ¿ÉÒÔ¿ìËÙÐ޸Ķø±ÜÃâ²éÕÒºÍÌæ»»¡£
³£Á¿Ó¦¸ÃÓà static ÉùÃ÷£¬²»ÒªÊ¹Óà #define£¬³ý·ÇËü¾ÍÊÇÃ÷È·×÷Ϊһ¸öºêÀ´Óõġ£
ÍÆ¼ö:
static NSString * const ZOCCacheControllerDidClearCacheNotification = @"ZOCCacheControllerDidClearCacheNotification"; static const CGFloat ZOCImageThumbnailHeight = 50.0f; |
²»ÍƼö:
#define CompanyName @"Apple Inc." #define magicNumber 42 |
³£Á¿Ó¦¸ÃÔÚ interface ÎļþÖÐÕâÑù±»ÉùÃ÷£º
extern NSString *const ZOCCacheControllerDidClearCacheNotification;
|
²¢ÇÒÓ¦¸ÃÔÚʵÏÖÎļþÖÐʵÏÖËüµÄ¶¨Òå¡£
ÄãÖ»ÐèҪΪ¹«¿ªµÄ³£Á¿Ìí¼ÓÃüÃû¿Õ¼äǰ׺¡£¼´Ê¹Ë½Óг£Á¿ÔÚʵÏÖÎļþÖпÉÄÜÒÔ²»Í¬µÄģʽʹÓã¬ÄãÒ²²»ÐèÒª¼á³ÖÕâ¸ö¹æÔòÁË¡£
·½·¨
¶ÔÓÚ·½·¨Ç©Ãû£¬ÔÚ·½·¨ÀàÐÍ (-/+ ·ûºÅ)ºóÓ¦¸ÃÒªÓÐÒ»¸ö¿Õ¸ñ¡£·½·¨¶ÎÖ®¼äÒ²Ó¦¸ÃÓÐÒ»¸ö¿Õ¸ñ£¨À´·ûºÏ Apple
µÄ¹æ·¶£©¡£ÔÚ²ÎÊýÃû³ÆÖ®Ç°×ÜÊÇÓ¦¸ÃÓÐÒ»¸öÃèÊöÐԵĹؼü´Ê¡£
ʹÓá°and¡±ÃüÃûµÄʱºòÓ¦µ±¸ü¼Ó½÷É÷¡£Ëü²»Ó¦¸ÃÓÃ×÷²ûÃ÷Óжà¸ö²ÎÊý£¬±ÈÈçÏÂÃæµÄinitWithWidth:height:
Àý×Ó£º
ÍÆ¼ö:
- (void)setExampleText:(NSString *)text image:(UIImage *)image; - (void)sendAction:(SEL)aSelector to:(id)anObject forAllCells:(BOOL)flag; - (id)viewWithTag:(NSInteger)tag; - (instancetype)initWithWidth:(CGFloat)width height:(CGFloat)height; |
²»ÍƼö:
- (void)setT:(NSString *)text i:(UIImage *)image; - (void)sendAction:(SEL)aSelector :(id)anObject :(BOOL)flag; - (id)taggedView:(NSInteger)tag; - (instancetype)initWithWidth:(CGFloat)width andHeight:(CGFloat)height; - (instancetype)initWith:(int)width and:(int)height; // Never do this.
|
×ÖÃæÖµ
NSString, NSDictionary, NSArray, ºÍ NSNumber ×ÖÃæÖµÓ¦¸ÃÓÃÔÚÈκδ´½¨²»¿É±äµÄʵÀý¶ÔÏó¡£ÌرðСÐIJ»Òª°Ñ
nil ·Å½ø NSArray ºÍ NSDictionary ÀÕâ»áµ¼Ö±ÀÀ£
Àý×Ó£º
NSArray *names = @[@"Brian", @"Matt", @"Chris", @"Alex", @"Steve", @"Paul"]; NSDictionary *productManagers = @{@"iPhone" : @"Kate", @"iPad" : @"Kamal", @"Mobile Web" : @"Bill"}; NSNumber *shouldUseLiterals = @YES; NSNumber *buildingZIPCode = @10018; |
²»ÒªÕâÑù×ö:
NSArray *names = [NSArray arrayWithObjects:@"Brian", @"Matt", @"Chris", @"Alex", @"Steve", @"Paul", nil]; NSDictionary *productManagers = [NSDictionary dictionaryWithObjectsAndKeys: @"Kate",
@"iPhone", @"Kamal", @"iPad", @"Bill", @"Mobile Web", nil]; NSNumber *shouldUseLiterals = [NSNumber numberWithBool:YES]; NSNumber *buildingZIPCode = [NSNumber numberWithInteger:10018]; |
¶ÔÓÚÄÇЩ¿É±äµÄ¸±±¾£¬ÎÒÃÇÍÆ¼öʹÓÃÃ÷È·µÄÈç NSMutableArray, NSMutableString
ÕâЩÀà¡£
ÏÂÃæµÄÀý×ÓÓ¦¸Ã±»±ÜÃâ:
NSMutableArray *aMutableArray = [@[] mutableCopy]; |
ÉÏÃæµÄÊéд·½Ê½´æÔÚЧÂÊÒÔ¼°¿É¶ÁÐÔµÄÎÊÌ⡣ЧÂÊ·½Ã棬һ¸ö²»±ØÒªµÄ²»¿É±ä±äÁ¿±»´´½¨£¬²¢ÇÒÂíÉϱ»·ÏÆúÁË£»Õâ²¢²»»áÈÃÄãµÄ
App ±äµÃ¸üÂý£¨³ý·ÇÕâ¸ö·½·¨»á±»ºÜƵ·±µØµ÷Óã©£¬µ«ÊÇȷʵû±ØÒªÎªÁËÉÙ´ò¼¸¸ö×Ö¶øÕâÑù×ö¡£¶ÔÓڿɶÁÐÔÀ´Ëµ£¬´æÔÚÁ½¸öÎÊÌ⣺µÚÒ»¸öÊǵ±ä¯ÀÀ´úÂë²¢ÇÒ¿´¼û
@[] µÄʱºòÄãµÄÄÔº£ÀïÂíÉÏ»áÁªÏµµ½ NSArray µÄʵÀý£¬µ«ÊÇÔÚÕâÖÖÇéÐÎÏÂÄãÐèҪͣÏÂÀ´Ë¼¿¼Ï¡£ÁíÒ»¸ö·½Ã棬һЩÐÂÊÖ¿´µ½ºó¿ÉÄÜ»á¶Ô¿É±äºÍ²»¿É±ä¶ÔÏóµÄ·ÖÆç¸Ðµ½²»Êæ·þ¡£Ëû/Ëý¿ÉÄܶԴ´ÔìÒ»¸ö¿É±ä¶ÔÏóµÄ¸±±¾²»ÊǺÜÊìϤ£¨µ±È»Õâ²¢²»ÊÇ˵Õâ¸ö֪ʶ²»ÖØÒª£©¡£µ±È»£¬Õâ²¢²»ÊÇ˵´æÔÚ¾ø¶ÔµÄ´íÎó£¬Ö»ÊÇ¿ÉÓÃÐÔ£¨°üÀ¨¿É¶ÁÐÔ)ÓÐһЩÎÊÌâ¡£
|