è¿ç¯æç« ä¸»è¦ä»ç»äºSwiftéçå¼ç±»åä¸å¼ç¨ç±»ååºå«å使ç¨,æ¬æ讲解äºå¼ç±»åä¸å¼ç¨ç±»åçåºå«ãå¦ä½éæ©ç±»åãä»ä¹æ¶å该ç¨å¼ç±»åãä»ä¹æ¶å该ç¨å¼ç¨ç±»åçå
容,éè¦çæåå¯ä»¥åèä¸
Swiftéé¢çç±»åå为两ç§ï¼
âå¼ç±»å(Value Types)ï¼æ¯ä¸ªå®ä¾é½ä¿çäºä¸åç¬æçæ°æ®æ·è´ï¼ä¸è¬ä»¥ç»æä½ (struct)ãæ举(enum) æè
å
ç»(tuple)çå½¢å¼åºç°ã
âå¼ç¨ç±»å(Reference Type)ï¼æ¯ä¸ªå®ä¾å
±äº«åä¸ä»½æ°æ®æ¥æºï¼ä¸è¬ä»¥ç±»(class)çå½¢å¼åºç°ã
å¨è¿ç¯åæéé¢ï¼æ们ä¼ä»ç»ä¸¤ç§ç±»ååèªçä¼ç¹ï¼ä»¥ååºè¯¥æä¹éæ©ä½¿ç¨ã
å¼ç±»åä¸å¼ç¨ç±»åçåºå«
å¼ç±»ååå¼ç¨ç±»åæåºæ¬çåå«å¨å¤å¶ä¹åçç»æãå½ä¸ä¸ªå¼ç±»å被å¤å¶çæ¶åï¼ç¸å½äºåé äºä¸ä¸ªå®å
¨ç¬ç«çå®ä¾ï¼è¿ä¸ªå®ä¾ä¿æå±äºèªå·±çç¬ææ°æ®ï¼æ°æ®ä¸ä¼åå°å
¶ä»å®ä¾çæ°æ®ååå½±åï¼
代ç å¦ä¸:
// ä¸é¢æ¯ä¸ä¸ªå¼ç±»åçä¾å
struct S { var data: Int = -1 }
var a = S()
var b = a // bæ¯açæ·è´
a.data = 42 // æ´æ¹açæ°æ®ï¼bçä¸åå½±å
println("(a.data), (b.data)") // è¾åºç»æ "42, -1"
å¼ç±»å就好å身份è¯å¤å°ä»¶ä¸æ ·ï¼å¤å°åºæ¥ä¹åï¼ä¿®æ¹å件ä¸é¢çå
容ï¼å¤å°ä»¶ä¸çå
容ä¸ä¼åã
å¦ä¸æ¹é¢ï¼å¤å¶ä¸ä¸ªå¼ç¨ç±»åçæ¶åï¼å®é
ä¸æ¯é»é»å°åé äºä¸ä¸ªå
±äº«çå®ä¾å身ï¼ä¸¤è
æ¯å
±ç¨ä¸å¥æ°æ®ãå æ¤ä¿®æ¹å
¶ä¸ä»»ä½ä¸ä¸ªå®ä¾çæ°æ®ï¼ä¹ä¼å½±åå°å¦å¤é£ä¸ªã
代ç å¦ä¸:
// ä¸é¢æ¯ä¸ä¸ªå¼ç¨ç±»åçä¾å
class C { var data: Int = -1 }
var x = C()
var y = x // yæ¯xçæ·è´
x.data = 42 // æ´æ¹xçæ°æ®ï¼çäºåæ¶ä¿®æ¹äºy
println("(x.data), (y.data)") // è¾åºç»æ "42, 42"
Mutation(ä¿®æ¹)å¨å®å
¨ä¸æ®æ¼çè§è²
å¼ç±»åè¾å¼ç¨ç±»åæ¥è¯´ï¼ä¼è®©ä½ æ´å®¹æå¨å¤§é代ç ä¸çæ¸
ç¶åµãå¦æä½ æ»æ¯å¾å°ä¸ä¸ªç¬ç«çæ·è´åºæ¥çå®ä¾ï¼ä½ å°±å¯ä»¥æ¾å¿å®ä¸ä¼è¢«ä½ appéé¢çå
¶ä»é¨å代ç é»é»å°ä¿®æ¹ãè¿å¨å¤çº¿ç¨çç¯å¢éé¢æ¯å°¤ä¸ºéè¦çï¼å 为å¦å¤ä¸ä¸ªçº¿ç¨å¯è½ä¼å¨æå°éä¿®æ¹ä½ çæ°æ®ãå æ¤å¯è½ä¼é æ严éçç¨åºé误ï¼è¿å¨è°è¯è¿ç¨ä¸é常é¾ä»¥æé¤ã
ç±äºå·®å«ä¸»è¦å¨äºä¿®æ¹æ°æ®çåæï¼é£ä¹å½å®ä¾çæ°æ®åªè¯»ï¼ä¸åå¨éè¦æ´æ¹çæ
åµä¸ï¼ç¨åªç§ç±»åé½æ¯æ²¡æåå«çã
ä½ å¯è½å¨æ³ï¼æçæ¶åæå¯è½ä¹éè¦ä¸ä¸ªå®å
¨ä¸åçç±»ãè¿æ ·ä½¿ç¨Cocoa NSObject对象çæ¶åä¼æ¯è¾å®¹æï¼åå¯ä»¥ä¿çå¼è¯ä¹ç好å¤ãå¨ä»å¤©ï¼ä½ å¯ä»¥éè¿åªä½¿ç¨ä¸å¯åçåå¨å±æ§ï¼åé¿å¼ä»»ä½å¯ä»¥ä¿®æ¹ç¶æçAPIï¼ç¨Swiftååºä¸ä¸ªä¸å¯åç±»(immutable class)ãå®é
ä¸ï¼å¾å¤åºæ¬çCocoaç±»ï¼ä¾å¦NSURLï¼é½æ¯è®¾è®¡æä¸å¯åç±»çãç¶èï¼Swiftè¯è¨ç®ååªå¼ºå¶structåenumè¿ç§å¼ç±»åçä¸å¯åæ§ï¼å¯¹ç±»è¿ç§å¼ç¨ç±»åå没æã(ä¾å¦è¿ä¸æ¯æ强å¶å°åç±»çéå¶ä¸ºä¸å¯åç±»)
å¦ä½éæ©ç±»å?
æ以å½æ们æ³è¦å»ºç«ä¸ä¸ªæ°çç±»åçæ¶åï¼æä¹å³å®ç¨å¼ç±»åè¿æ¯å¼ç¨ç±»åå¢?å½ä½ 使ç¨Cocoaæ¡æ¶çæ¶åï¼å¾å¤APIé½è¦éè¿NSObjectçå类使ç¨ï¼æ以è¿æ¶åå¿
é¡»è¦ç¨å°å¼ç¨ç±»åclassãå¨å
¶ä»æ
åµä¸ï¼æä¸é¢å 个ååï¼
ä»ä¹æ¶å该ç¨å¼ç±»åï¼
âè¦ç¨==è¿ç®ç¬¦æ¥æ¯è¾å®ä¾çæ°æ®æ¶
âä½ å¸æé£ä¸ªå®ä¾çæ·è´è½ä¿æç¬ç«çç¶ææ¶
âæ°æ®ä¼è¢«å¤ä¸ªçº¿ç¨ä½¿ç¨æ¶
ä»ä¹æ¶å该ç¨å¼ç¨ç±»å(class)ï¼
âè¦ç¨==è¿ç®ç¬¦æ¥æ¯è¾å®ä¾èº«ä»½çæ¶å
âä½ å¸ææå建ä¸ä¸ªå
±äº«çãå¯å对象çæ¶å
å¨Swiftéé¢ï¼æ°ç»(Array)ãå符串(String)ãåå
¸(Dictionary)é½å±äºå¼ç±»åãå®ä»¬å°±åCè¯è¨éé¢ç®åçintå¼ï¼æ¯ä¸ä¸ªä¸ªç¬ç«çæ°æ®ä¸ªä½ãä½ ä¸éè¦è±ä»»ä½å夫æ¥é²èå
¶ä»ä»£ç å¨æå°éä¿®æ¹å®ä»¬ãæ´éè¦çæ¯ï¼ä½ å¯ä»¥å¨çº¿ç¨ä¹é´å®å
¨çä¼ éåéï¼èä¸éè¦ç¹å°å»åæ¥ãå¨Swifté«å®å
¨æ§çç²¾ç¥ä¸ï¼è¿ä¸ªæ¨¡å¼ä¼å¸®å©ä½ ç¨Swiftååºæ´å¯æ§ç代ç ã
温馨提示:答案为网友推荐,仅供参考