{"rsdb":{"rid":"239222","subhead":"","postdate":"0","aid":"164884","fid":"89","uid":"1","topic":"1","content":"
\n

1.\u53d6\u6d88\u8fc7\u53bb\u7684\u63a5\u53e3<\/p> \n

\u3000\u3000\u8bf4\u8d77 GCD\uff0c \u5927\u5bb6\u80af\u5b9a\u56de\u60f3\u8d77\u7c7b\u4f3c dispatch_async \u8fd9\u6837\u7684\u8bed\u6cd5\u3002 GCD \u7684\u8fd9\u4e2a\u8bed\u6cd5\u6a21\u5f0f\u65e0\u8bba\u662f\u548c Objc \u8fd8\u662f Swift \u7684\u6574\u4f53\u98ce\u683c\u90fd\u4e0d\u592a\u6253\u6389\u3002 \u6240\u4ee5 Swift 3 \u4e2d\u5bf9\u5b83\u7684\u8bed\u6cd5\u8fdb\u884c\u4e86\u5f7b\u5e95\u7684\u6539\u5199\u3002<\/p> \n

\u6bd4\u5982\u6700\u5e38\u7528\u7684\uff0c\u5728\u4e00\u4e2a\u5f02\u6b65\u961f\u5217\u4e2d\u8bfb\u53d6\u6570\u636e\uff0c \u7136\u540e\u518d\u8fd4\u56de\u4e3b\u7ebf\u7a0b\u66f4\u65b0 UI\uff0c \u8fd9\u79cd\u64cd\u4f5c\u5728\u65b0\u7684 Swift \u8bed\u6cd5\u4e2d\u662f\u8fd9\u6837\u7684\uff1a<\/p> \n

\n
1<\/span> DispatchQueue.global<\/span>().async<\/span> {\n<\/span>2<\/span>  \n3<\/span>   DispatchQueue.main.async<\/span> {\n<\/span>4<\/span>    \n5<\/span>   self.label?.text = "<\/span>finished<\/span>"<\/span>\n6<\/span>    \n7<\/span>   } \n<\/span>8<\/span>    \n9<\/span> }<\/pre> \n <\/div> \n 

 <\/p> \n

\u53d8\u5316\u5f88\u5927\uff0c \u9996\u5148 Swift 3 \u6452\u5f03\u4e86 GCD \u4ee5\u524d\u7684\u51fd\u6570\u5f0f\u8c03\u7528\u65b9\u5f0f\u3002 \u5f15\u5165\u4e86 DispatchQueue \u8fd9\u4e2a\u7c7b\uff0c \u7b2c\u4e00\u884c\u7684 DispatchQueue.global().async<\/p> \n

\u76f8\u5f53\u4e8e\u4f7f\u7528\u5168\u5c40\u961f\u5217\u8fdb\u884c\u5f02\u6b65\u64cd\u4f5c\u3002\u7136\u540e\u5728\u8c03\u7528 DispatchQueue.main.async<\/p> \n

\u4f7f\u7528\u4e3b\u7ebf\u7a0b\u66f4\u65b0\u76f8\u5e94\u7684 UI \u5185\u5bb9\u3002<\/p> \n

\u65e0\u8bba\u4ece\u4ee3\u7801\u957f\u5ea6\uff0c\u5df2\u7ecf\u8bed\u6cd5\u542b\u4e49\u4e0a\u90fd\u6e05\u6670\u4e86\u4e00\u4e9b\u5462\u3002 \u53e6\u5916\uff0c \u8fd9\u6b21\u5bf9 GCD \u7684\u6539\u8fdb\u8fd8\u5305\u62ec\u4f18\u5148\u7ea7\u7684\u6982\u5ff5\u3002 \u4ee5\u5f80\u6211\u4eec\u4f7f\u7528 Global Queue \u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u4f7f\u7528 DISPATCH_QUEUE_PRIORITY_DEFAULT \u6216 DISPATCH_QUEUE_PRIORITY_BACKGROUND \u7b49\uff0c\u6765\u6307\u5b9a\u961f\u5217\u7684\u4f18\u5148\u7ea7\u3002 \u800c\u65b0\u7684 GCD \u5f15\u5165\u4e86 QoS (Quality of Service) \u7684\u6982\u5ff5\uff0c\u4f53\u73b0\u5728\u4ee3\u7801\u4e0a\u9762\u5c31\u662f\u4f18\u5148\u7ea7\u6240\u5bf9\u5e94\u7684\u540d\u79f0\u53d8\u4e86\uff0c \u5bf9\u5e94\u5173\u7cfb\u5982\u4e0b\uff1a<\/p> \n

\n
1<\/span> DISPATCH_QUEUE_PRIORITY_HIGH:  .userInitiated\n<\/span>2<\/span>  \n3<\/span> DISPATCH_QUEUE_PRIORITY_DEFAULT:  .default<\/span>\n4<\/span>  \n5<\/span> DISPATCH_QUEUE_PRIORITY_LOW: .utility\n<\/span>6<\/span>  \n7<\/span> DISPATCH_QUEUE_PRIORITY_BACKGROUND: .background<\/pre> \n <\/div> \n 

\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u5982\u679c\u60f3\u4ee5\u6700\u9ad8\u4f18\u5148\u7ea7\u6267\u884c\u8fd9\u4e2a\u961f\u5217\uff0c \u90a3\u4e48\u5c31\u53ef\u4ee5\u8fd9\u6837\uff1a<\/p> \n

\n
1<\/span> DispatchQueue.global<\/span>(qos: .userInitiated).async<\/span> {\n<\/span>2<\/span>  \n3<\/span>  }<\/pre> \n <\/div> \n 

 <\/p> \n

 <\/p> \n

2. DispatchWorkItem<\/p> \n

\u3000\u3000\u9664\u4e86\u76f4\u63a5\u4f7f\u7528 Global Queue\uff0c \u8fd8\u53ef\u4ee5\u5b9a\u4e49 DispatchWorkItem\u3002 DispatchWorkItem \u5b9a\u4e49\u4e86\u4e00\u4e2a\u64cd\u4f5c\u7684\u5185\u90e8\u4ee3\u7801\uff0c\u4ee5\u53ca\u4f18\u5148\u7ea7\uff0c\u7279\u6027\u7b49\u7b49\u3002 \u5b83\u53ef\u4ee5\u76f4\u63a5\u5728\u4efb\u4f55\u961f\u5217\u4e2d\u6267\u884c\uff1a<\/p> \n

\n
1<\/span> let queue = DispatchQueue(label: "<\/span>swift.queue<\/span>"<\/span>)\n<\/span>2<\/span>  \n3<\/span> let workItem = DispatchWorkItem(qos: .userInitiated, flags: .assignCurrentContext) {\n<\/span>4<\/span>  \n5<\/span>   }\n<\/span>6<\/span>    \n7<\/span> queue.async<\/span>(execute: workItem)<\/pre> \n <\/div> \n 

\u8fd9\u6837\u7684 GCD\uff0c\u770b\u8d77\u6765\u66f4\u52a0\u7b26\u5408\u9762\u5411\u5bf9\u8c61\u7684\u98ce\u683c\u4e86\u3002<\/p> \n

dispatch_time_t<\/p> \n

\u8fd8\u6709\u4e00\u4e2a\u662f\u5bf9 dispatch_time_t \u7684\u6539\u8fdb\uff1a<\/p> \n

\n
1<\/span> let delay = DispatchTime.now() + .seconds(60<\/span>)\n<\/span>2<\/span> DispatchQueue.main.after(when: delay) {\n<\/span>3<\/span>  \/\/<\/span> Do something<\/span>\n4<\/span> }<\/pre> \n <\/div> \n 

\u8bed\u6cd5\u4f7f\u7528\u8d77\u6765\u66f4\u52a0\u7b80\u5355\u3002DispatchTime.now() \u662f\u5f53\u524d\u4e8b\u524d\uff0c \u7136\u540e\u52a0\u4e0a .seconds(60) \u4ee3\u8868 60\u79d2\u3002 \u518d\u4f7f\u7528 DispatchQueue.main.after \u8ba9\u8fd9\u4e2a\u64cd\u4f5c\u5728 60 \u79d2\u540e\u6267\u884c\u3002 \u76f8\u6bd4\u4e8e\u4e4b\u524d\u7684 GCD \u8bed\u6cd5\uff0c\u90a3\u5c31\u5bb9\u6613\u7406\u89e3\u5f88\u591a\u4e86\u3002<\/p> \n

\u987a\u624b\u513f\u628a GCD \u4ee5\u524d\u83b7\u53d6\u5f53\u524d\u65f6\u95f4\u7684\u8bed\u6cd5\u8d34\u51fa\u6765\u5bf9\u6bd4\u4e00\u4e0b\uff1a<\/p> \n

\n
let dispatch_time = dispatch_time(DISPATCH_TIME_NOW, Int64(60 * NSEC_PER_SEC))\n<\/pre> \n <\/div> \n 

 <\/p>\n<\/div>","orderid":"0","title":"GCD(Swift)","smalltitle":"","mid":"0","fname":"Swift","special_id":"0","bak_id":"0","info":"0","hits":"10086","pages":"1","comments":"0","posttime":"2017-10-16 18:19:06","list":"1508149146","username":"admin","author":"","copyfrom":"","copyfromurl":"","titlecolor":"","fonttype":"0","titleicon":"0","picurl":"https:\/\/www.cppentry.com\/upload_files\/","ispic":"0","yz":"1","yzer":"","yztime":"0","levels":"0","levelstime":"0","keywords":"GCD<\/A> Swift<\/A>","jumpurl":"","iframeurl":"","style":"","template":"a:3:{s:4:\"head\";s:0:\"\";s:4:\"foot\";s:0:\"\";s:8:\"bencandy\";s:0:\"\";}","target":"0","ip":"113.108.110.181","lastfid":"0","money":"0","buyuser":"","passwd":"","allowdown":"","allowview":"","editer":"","edittime":"0","begintime":"0","endtime":"0","description":"GCD(Swift)","lastview":"1714183545","digg_num":"8384","digg_time":"0","forbidcomment":"0","ifvote":"0","heart":"","htmlname":"","city_id":"0"},"page":"1"}