swift中的!和?作用
舉個例子吧:
問題:
在實際用Swift寫CocoaTouch時,發現下面這樣寫才可以通過編譯
var amiteLbl :UILabel?
self.amiteLbl = UILabel(frame:CGRectMake(50,100,200,40))
self.amiteLbl!.text = "I love mixbox"
self.view?.addSubview(self.amiteLbl)
這裡不是很明白!號的意義。而在view addSubview 時卻又加上了?號
請幫忙解釋下 “!”在Swift裡的意義
解釋:
由於amiteLbl是可選變數,所以可能有值,也可能為nil。
使用self.amiteLbl!是明確宣告此時self.amiteLbl裡一定有值,無論什麼情況都呼叫後面的.text賦值方法。
而使用self.view?是宣告此時並不確定self.view裡是否有值,所以只在view有值時呼叫後面.addSubview方法。
這樣做的目的一是讓程式碼更明確, 二是給編譯器提供更多線索,在編譯時發現更多潛在錯誤。
Swift顯然是一門非常明確,需要開發者先想清楚再程式設計的語言,秉承了Apple一貫的作風:)
相關推薦
swift開發之 -- ? 和 ! 的作用
裏的 http col 調用 play class 種類型 value sel 記錄下這個知識點: 一般我們在一下兩種情況會遇到 ? 和 !的使用 1,聲明變量時 var number:Int? var str:String? 2,在對變量進行操作時 number?.
C++非類中和類中的static的作用
一、非類中的static 1、隱藏 static修飾全域性變數的時候,這個全域性變數只能在本檔案中訪問,不能在其它檔案中訪問,即便是extern外部宣告也不可以。static修飾一個函式,則這個函式的只能在本檔案中呼叫,不能被其他檔案呼
關於 Swift 中重寫 preferredStatusBarStyle 不起作用問題解決方案
前言:本次使用的 Swift 版本為 4.2 版本,所以程式碼上與之前版本的寫法會有不一樣的地方, 但思路都如此。那我就根據自己的專案簡單說下解決辦法, 又更好辦法的, 也請大牛留言探討, O(∩_∩)O謝謝! 分析: 在 iOS9 之前使用
Swift中switch和switch在enum中和非enum中的區別
對於swift中的switch感覺到非常棒,它會比我之前用過的語言中的switch應用要廣得多,而且對於處理多值匹配簡直強到爆,對於座標的比較簡直是絕配。 在Swift中的switch語法比c,java等語言感覺簡便了很多,而且也能更加符合邏輯和對事物的嚴謹。 如下: sw
swift中的!和?作用
舉個例子吧: 問題: 在實際用Swift寫CocoaTouch時,發現下面這樣寫才可以通過編譯 var amiteLbl :UILabel? self.amiteLbl = UILabel(frame:CGRectMake(50,100,200,40)) self.amiteLbl!.text = "I l
swift中通知的使用
lin ont view selector load pan span 處的 ext ios討論群1群:135718460 1.發通知。(以這條通知為例,通知名字:gameOverNotification。通知參數:title) NSNotificationCent
TRIZ系列-創新原理-20-有效作用的連續性原理
工作流 div 浪費 可能 生產 ont 也不會 打印 con 有效作用的連續性原理表述例如以下:1)連續實施動作不要中斷,物體的全部部分應該一直處於滿負荷工作狀態。2)去除全部空暇的,中間的動作:3)用循環的動作取代“來來回回”的動作:這個原理能夠看著是原理19的一個反
創建對象與使用對象——談談工廠的作用
方便 構圖 erb aof 常用 uda 行為 too jpg 工廠模式(包括簡單工廠模式、工廠方法模式和抽象工廠模式)到底有什麽用,很多時候通過反射機制就可以很靈活地創建對象,為毛還要工廠?,在本文中我將圍繞創建對象和使用對象來簡單談談工廠的作用。 與一個對象
RRTI的概念以及Class對象作用
eat 有趣的 getclass 2種 init null java虛擬機 class對象 小例子 深入理解Class對象 RRTI的概念以及Class對象作用 認識Class對象之前,先來了解一個概念,RTTI(Run-Time Type Identifi
java中string.trim()函數的作用
main ati cnblogs return style ret blog substr system trim /[tr?m] / 英文意思:整理,修理,修剪,整齊的 trim()的作用:去掉字符串首尾的空格。 public static void main(S
自動類型轉換、強制類型轉換、作用域、整型表數範圍
基本類 logs 自動類型轉換 四種 main print 輸出字符串 縮小 stat 一、變量的作用域 測試代碼: public class Test1 { private static int value = 1; // 全局變量 pri
二叉樹中和為某一值的所有路徑
說明 util ray 如果 tree 二叉樹 節點 integer fin 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 import java.util.ArrayList
導致spring事務配置不起作用的一種原因
red something 事務配置 nbsp oid -s color con bsp @Component public class AnalyticsApplication { @Autowired private InitializationAc
Swift:閉包(Closures)
ins 總結 ole n) 而在 unsafe width content decode 一、 基本概念 閉包(Closures)是自包括的功能代碼塊,能夠在代碼中使用或者用來作為參數傳值。 在Swift中的閉包與C、OC中的blocks和其他編程語言(如C#)中的l
iOS開發項目實戰——Swift實現圖片輪播與瀏覽
0.10 上網 timer類 開發項目 cas hub string obj tle 近期開始開發一個新的iOS應用,自己決定使用Swift。進行了幾天之後,發現了一個非常嚴峻的問題。那就是無論是書籍,還是網絡資源,關於Swift的實在是太少了,隨便一
linux根目錄文件夾的作用
etc 查看 應用程序 linu 重啟 系統 通用 fdisk 情況 1.如何查看磁盤分區和使用情況 fdisk:查看硬盤分區表 df:查看分區使用情況 du:查看文件占用空間情況 2.根目錄文件作用介紹 / 根目錄 /bin 做為基礎系
call() 、 apply() 、bind()方法的作用和區別!
調用 權威指南 () 使用 func 開始 把他 對象 bsp 從一開始,我是在書上看到關於bind()、call() 和 apply(), 不過長久以來,在工作中與網上接觸到了很多關於這三個方法的使用場景,對這三個方法也算是比較熟悉了。所以把他們的作用和區別簡單闡述一下!
javascript作用域鏈理解
sco 執行上下文 變量提升 返回 結構圖 活動 ren 產生 內部 執行上下文(Execution context,簡稱EC) 概念 每當控制器到達ECMAScript可執行代碼的時候,就進入了一個執行上下文。 javascript中,EC分為三種: 全局
JavaScript window與undefined作為參數的作用
提高 節省空間 上線 關於 定義 內部 局部變量 image 輸出 1、原函數 輸出結果:1 如圖: 2、加window的參數 輸出結果:window對象 如圖: 註意:此時的window不是全局變量,而是局部變量 3、關於形參必須傳window麽?當然是不需要
textArea中的placeholder屬性不起作用
問題 img tex text tro pan str ext textarea 問題描述: textarea中加的placeholder屬性有給值,但是在jsp頁面中沒有對應的提示信息顯示,如下圖所示: 原因: <textarea>與</texta