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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ìøÓëObjective-C±à³ÌÒÕÊõ
 
×÷Õߣºwangzz À´Ô´£ºCSDN ·¢²¼ÓÚ£º2015-10-16
  2658  次浏览      27
 

ǰÑÔ

ÎÒÃÇÔÚ 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) { ...

Èç¹û³ÌÐòÔ±Çôí³ÉÕâÑù£º

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 : y;

²»ÍƼö:

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;

²»ÍƼö:

UIButton *setBut;

³£Á¿

³£Á¿Ó¦¸ÃʹÓÃÍÕ·åÃüÃû·¨£¬²¢ÇÒΪÁËÇå³þ£¬Ó¦¸ÃÓÃÏà¹ØµÄÀàÃû×÷Ϊǰ׺¡£

ÍÆ¼ö:

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 µÄʵÀý£¬µ«ÊÇÔÚÕâÖÖÇéÐÎÏÂÄãÐèҪͣÏÂÀ´Ë¼¿¼Ï¡£ÁíÒ»¸ö·½Ã棬һЩÐÂÊÖ¿´µ½ºó¿ÉÄÜ»á¶Ô¿É±äºÍ²»¿É±ä¶ÔÏóµÄ·ÖÆç¸Ðµ½²»Êæ·þ¡£Ëû/Ëý¿ÉÄܶԴ´ÔìÒ»¸ö¿É±ä¶ÔÏóµÄ¸±±¾²»ÊǺÜÊìϤ£¨µ±È»Õâ²¢²»ÊÇ˵Õâ¸ö֪ʶ²»ÖØÒª£©¡£µ±È»£¬Õâ²¢²»ÊÇ˵´æÔÚ¾ø¶ÔµÄ´íÎó£¬Ö»ÊÇ¿ÉÓÃÐÔ£¨°üÀ¨¿É¶ÁÐÔ)ÓÐһЩÎÊÌâ¡£

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

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
Visual C++±à³ÌÃüÃû¹æÔò
ÈκÎʱºò¶¼ÊÊÓõÄ20¸öC++¼¼ÇÉ
CÓïÑÔ½ø½×
´®¿ÚÇý¶¯·ÖÎö
ÇáÇáËÉËÉ´ÓCһ·×ßµ½C++
C++±à³Ì˼Ïë


C++²¢·¢´¦Àí+µ¥Ôª²âÊÔ
C++³ÌÐò¿ª·¢
C++¸ß¼¶±à³Ì
C/C++¿ª·¢
C++Éè¼ÆÄ£Ê½
C/C++µ¥Ôª²âÊÔ


±±¾© ǶÈëʽC¸ßÖÊÁ¿±à³Ì
Öйúº½¿Õ ǶÈëʽC¸ßÖÊÁ¿±à³Ì
»ªÎª C++¸ß¼¶±à³Ì
±±¾© C++¸ß¼¶±à³Ì
µ¤·ð˹ C++¸ß¼¶±à³Ì
±±´ó·½Õý CÓïÑÔµ¥Ôª²âÊÔ
ÂÞ¿ËΤ¶û C++µ¥Ôª²âÊÔ