Time of Update: 2015-09-05
標籤:連結如下:以前只注意使用dispatch_once達到建立單例對象時的安全執行緒,讀了下邊這篇文章,才突然發現以前的做法漏洞百出:僅僅保證建立時的安全執行緒是完全不夠的,要保證單例變數讀取時的安全執行緒!http://www.cocoachina.com/swift/20150129/11057.html 我感興趣的部分就是其中關於多線程時的單例成員變數訪問部分,swfit語言寫的,這裡的concurrentPhotoQueue是一個自己建立的並發queue。func
Time of Update: 2015-09-05
標籤:iOS軟體更新思路需要更新版本數組 needUpdateVersions{1.2.61.2.8}曆史版本數組 historyUpdateVersions1.2.41.2.51.2.6更新資料庫1.2.71.2.8 更新資料庫lastTowToFinalVersions倒數第二個版本到目前的版本1.2.71.2.8如果只有一個曆史版本,那麼取目前的版本1.2.8finalNeedUpdateVersions需要更新版本數組中找到 >倒數第二個版本 <=最新版本 的版本數組1.
Time of Update: 2015-09-05
標籤: 將自己的App註冊到iOS,就要用到iOS文檔處裡的功能,我們註冊我們的程式用來處理我們自己特殊的文件類型。 首先,我們要在Info.plist檔案中設定Document types
Time of Update: 2015-09-04
標籤:android
Time of Update: 2015-09-04
標籤:今天是自習,前幾天打飛機的遊戲在老師的帶領下做了一遍,今天又回顧了一遍,然後自己嘗試性的做了一個簡化的AngryBird,在做的過程中發現了一些小問題,有時候容易馬虎,少了一行代碼,一個return 或者一個初始化
Time of Update: 2015-09-04
標籤:android fragment activity Fragment的使用可以讓我們的應用更靈活的適配各種型號的安卓裝置,但是對於Fragment和Activity之間的通訊,很多朋友應該比較陌生,下面我們就通過一個執行個體來看一看如何?。一、Activity->Fragment傳遞資料1.main.xml:<LinearLayout
Time of Update: 2015-09-05
標籤:垂直置中是布局中十分常見的效果之一,為實現良好的相容性,PC端實現垂直置中的方法一般是通過絕對定位,table-cell,負邊距等方法。有了css3,針對移動端的垂直置中就更加多樣化。方法1:table-cellhtml結構:<div class="box box1"> <span>垂直置中</span></div>css:.box1{ display: table-cell; vertical-align:
Time of Update: 2015-09-05
標籤:預設的表格樣式通常不能滿足正常的開發需要 解決方案 —— 自訂Cell1> XIB(團購)2> 純程式碼(微博)3> StoryBoard XIB的定義步驟-----------------------------------------------1> 建立HMTgCell.xib2> 拽一個需要自訂的控制項,擺放其他子控制項3> 建立一個類* 類名要與XIB的名字保持一致*
Time of Update: 2015-09-04
標籤: 結果:1.二個按鈕可以建立訊息提醒,最小化也是建立訊息提醒。2.程式必須最小化後才能點擊訊息提醒Label2才會有反映。 執行個體代碼: 1 unit Unit1; 2 3 interface 4 5 uses 6 System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 7 FMX.Types, FMX.Controls,
Time of Update: 2015-09-05
標籤:android原生可擴充ExpandableListView就是可以伸縮的listView,一條標題下面有多條內容。 這個list的adapter對的資料要求與普通ListView的資料要求也有一些差別,這個list需要有兩個資料來源一半需要 List<String> groups 作為group 和一個 Map<String , List<String>>
Time of Update: 2015-09-04
標籤:html:<video id="video" autoplay=""style=‘width:640px;height:480px‘></video><button id=‘picture‘>PICTURE</button><canvas id="canvas" width="640" height="480"></canvas></body>js:<script> var video =
Time of Update: 2015-09-04
標籤:android path sdk eclipse android studio 為什麼要修改路徑呢……因為我之前裝過Eclipse,也裝過Android SDK,但是昨天裝Android Studio的時候不小心又裝了一個Android
Time of Update: 2015-09-04
標籤:$watch、$digest、$apply $watch 代表的就是對資料來源的監聽,當資料來源發生變化,就會觸發第二個參數的回呼函數 $digest 代表觸發一個資料來源變化的事件 $apply 代表對於$digest的一個封裝,他多了一個參數 $watch 第一個參數就是要監聽的資料來源 第二個參數就是當監聽的資料來源發生變化了,觸發的一個回呼函數,回呼函數包含兩個參數,分別代表(新值、舊值) $digest
Time of Update: 2015-09-05
標籤: 從delphi 開始支援安卓的開發開始, 安卓service 開發一直都是delphier 繞不過去的坎,以前也有開發service 的方法,但是都是手工處理開機檔案,而且要修改很多東西,基本上成功的機率很低。 delphi 10 seattle(這個名字很特殊,與win10 一樣,直接跳過了9) 終於官方支援安卓service 開發了,不知道現在現在開發安卓service
Time of Update: 2015-09-05
標籤: 這套iOS學習資料包含三部分 : 《Learn Sketch 3》、《Learn iOS Design》、《Build an iOS app》以及《Design With Swift》<1> Learn Sketch 3:Sketch工具的使用點擊下載 <2> Learn iOS Design: 設計中涉及的原則 點擊下載<3> Build an iOS app:
Time of Update: 2015-09-05
標籤:在我之前的學習筆記中討論過ViewController,過了這麼久,對它也有了新的認識和體會,ViewController是我們在開發過程中碰到最多的朋友,今天就來好好認識一下它。ViewController是IOS開發中MVC模式中的C,ViewController是view的controller,ViewController的職責主要包括管理內部各個view的載入顯示和卸載,同時負責與其他ViewController的通訊和協調。在IOS中,有兩類ViewController,一類是顯
Time of Update: 2015-09-05
標籤:android listview 上拉載入 下拉重新整理 上一篇文章Android實戰簡易教程-第五十三槍(通過實現OnScrollListener介面實現上拉載入更多功能)講述了如何?上拉載入更多的功能,本篇,我們在上一篇的基礎上實現下拉重新整理功能。主要通過對滾動狀態和手勢監聽實現這一功能,下面我們看一下代碼:1.header.xml:<?xml
Time of Update: 2015-09-04
標籤:android listview checkbox全選 前段時間寫過一篇文章:Android實戰簡易教程-第四十七槍(ListView多選-實現點餐系統)有的同學留言建議,可不可以動態控制checkbox的顯示和全選反選功能,我研究了一下,發現實現也比較容易,特寫下此篇文章。學習就是要有發散思維,要舉一反三,大家也可以根據我的執行個體進行改編,添加和刪除一些功能,這樣可以提高你對知識的認知
Time of Update: 2015-09-05
標籤:二十三種設計模式分為三大類:建立型模式,共五種:Factory 方法模式、抽象原廠模式、單例模式、建造者模式、原型模式。結構型模式,共七種:適配器模式、裝飾器模式、代理模式、面板模式、橋接模式、組合模式、享元模式。行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解譯器模式。 1 package com.example.main; 2 3 import
Time of Update: 2015-09-04
標籤:代碼如下:+ (NSString*) deviceString{ // 需要#import "sys/utsname.h" struct utsname systemInfo; uname(&systemInfo); NSString *deviceString