給所有使用FMX(FireMonkey)進行開發的忠告!
沒有廢話,直接正文:
在開始之前,首先我假設您有10年、或者20年甚至是30年的Pascal開發經驗,由於種種無法解釋且又無法擺脫的原因而不得不使用FMX來進行苦逼的開發,所以,我覺得下面是您所必須要了解的: 一、放棄,放棄,再放棄! 這句話我寧願每天說100萬遍,寧願讓它長在您的腦門上,刻在您的腦子裡,穿在您的衣服上!所以,請放棄使用FMX的開發,放棄,放棄,再放棄!不要問為什麼。。。如果,您某天發現這段話是對的,請一定要對我點贊! 二、不幸的阻塞 好了,您沒有被上面一段話嚇倒,視死如歸、大義凜然、義無反顧、破釜沉舟、依然決然的要使用FMX。很好,您面臨的第一個問題就是:介面(UI)阻塞,簡單點兒說,UI純粹是用來顯示資料的,除此之外,它不應該有任何功能,也不應該阻塞任何操作!但是,由於Windows上的開發習慣,你已經適應了MessageBox,ShowModal等等阻塞,所以,這是第一個障礙,您必須跨過去!方法: 刪除或改寫所有ShowMessage,MessageBox,ShowModal等等阻塞UI的程式碼,如果不確定,請直接刪除,因為這就是萬惡之源,一切未知可怕的錯誤幾乎都來自於這些簡簡單單的阻塞!它們的存在都在時時刻刻提醒著你,那裡有一個定時炸彈,一個不知道什麼時候就會爆炸的定時炸彈!所以一定要記住:除了讓UI顯示資料外,不要讓它做任何無聊的事情! 三、多執行緒互動 記住,所有UI操作包括釋放理論上都應該在主執行緒中進行,如果要在資料執行緒中進行UI顯示(操作),請一定記得執行緒同步!執行緒同步!執行緒同步!否則,各種AV錯誤會變著法的把你折磨得死去活來,欲仙欲死,痛不欲生,淚如泉湧,暴跳如雷。。。也許您還有更多更可怕的成語來描述您心中的那無數匹羊駝。。。 四、理解差異 上面的二和三如果能讓你順利過關的話,我應該說:恭喜你,恭喜蛻皮成功!蛻皮的疼痛應該去問蛇,問螃蟹,問所有一切有殼限制成長的生物,你有和他們相同的疼痛時也許才能說您準備好更進一步了。 迴歸正題,這裡的差異指的是您日常開發中的Windows和移動端的差異,你需要認真理解並每天重新升級自己對這種差異的認知,否則,極有可能貓也沒畫成,老虎也沒影。。。 好吧,這麼說吧,Android開發能讓你再蛻一層皮,IOS開發依然能讓你再蛻一層皮,那些說“一套程式碼到處編譯”的忽悠小白還是沒問題的,但是,您得仔細想想:您能這麼容易被忽悠嗎? 五、可怕的第三方 如果說,經過四的蛻皮,您已經準備開始大展拳腳的話,我建議您還是先了解一下如何整合第三方SDK(工具)吧。除非您絕不用任何第三方的SDK,那麼問題來了,如果不用第三方,您開發毛線啊???有意義嗎? 經過艱苦卓絕、痛不欲生的漫長熬夜歲月後,您終於把要用到的第三方SDK給整合進來了,好吧,恭喜你,開發入門終於成功! 六、萬里長征終於開始 蛻了好幾次皮,終於要開始大展巨集圖,那麼下面這些問題(坑)一定要注意:Z-Order,WebView,各種花哨的顯示效果,記憶體佔用的瘋狂,奇葩的編譯結果,垃圾的垃圾回收,永遠改不完的架構Bug以及讓你哭得死去活來的編譯Bug,還有那永遠趕不上作業系統、編譯工具的更新,說難聽點兒,吃屎都趕不上熱乎的。。。即使經過這麼痛苦而漫長的蛻變,您也剛剛準備好開始萬里長征,心裡是不是又跑過去無數群羊駝呢? 七、要成精嗎 建國後,我們已經嚴禁成精了,所以,您可以看看走完上面的2~6步驟要花多少時間,無論您花過還是沒有花過,您一定要有一個肯定且正確的概念:使用FMX進行開發,您不可能昇天成仙,更不可能半道成精,只有一種可能,那就是,參看第一條!
最後:我很想把這段文字變成吐槽的,但是,請相信,上面這些文字中的每個字都代表一滴淚或者一滴汗,所以,請注意:這段文字絕非吐槽,請自行甄別!