2015-05-13 90 views
13

我下面的教程我發現在網絡上,有這樣的代碼行:如何正確讀取Apple iOS文檔?

var myImage = UIImage(named: "icon") 

我明白這一行做什麼,但我不想記住它當然,我想了解作者是如何創建這些代碼的,因此我搜索了UIImage類引用的文檔,在初始化程序部分沒有找到識別此代碼的內容,爲什麼?我在哪裏可以找到關於此代碼的更多信息

我讀了很多我在網上找到的教程,看了很多視頻教程,並且閱讀了很多書,他們都沒有例外,他們告訴你代碼,他們完全解釋它,但他們沒有不告訴你他們是怎麼想出來的,他們是如何爲正確的工作找到正確的方法的?

我應該花些時間閱讀Apple文檔而不是所有這些教程嗎?有什麼我做錯了嗎?我錯過了什麼嗎?我不想記住所有讀到的東西,這不是我想要學習開發應用程序的原因,我想了解在哪裏尋找正確的代碼,我想學會像開發人員一樣思考。

回答

8

有3個有用的書面資料來源:

  1. 示例代碼/教程:

    的官方文檔是偉大的,一旦你有一些經驗在Xcode/iOS的編碼,但它是一個艱難的地方開始。沒有什麼比看好好的示例代碼。

    示例代碼(來自Apple,來自Stack Overflow,來自Ray Wenderlich,來自任何可以找到它的地方)是一種很好的學習方式。即使編寫您正在閱讀的教程的人也從其他人的示例代碼開始。第一批學習iOS的人開始使用Apple的示例代碼。

  2. 的官方文檔:

    要得到的官方文檔選項點擊UIImage在你的代碼或在操場上。在彈出的對話框中選擇UIImage Class Reference。您正在尋找的初始化程序有:

    + imageNamed:
    返回與指定文件名關聯的圖像對象。

    宣言
    SWIFT
    init?(named name: String) -> UIImage

    Objective-C的
    + (UIImage *)imageNamed:(NSString *)name

    參數
    文件的名稱。如果這是第一次加載圖像,則 方法將在應用程序的 主包中查找具有指定名稱的圖像。

    返回值指定文件的圖像對象,或 如果該方法找不到指定的圖像,則返回nil。

    在Swift中,當然,您不要直接調用init來調用初始化函數。相反,在這種情況下,您使用類名稱UIImagename是參數的內部名稱,並且?告訴您這是可能返回nil的可分解的初始化程序,因此實際上此初始化程序返回UIImage?。所以你應該看看init?(named name: String) -> UIImage並且認爲UIImage(named: String) -> UIImage?

  3. 頭文件:

    UIImage到您的代碼或一個遊樂場,並在其上命令 -click。這將調出UIImage的頭文件信息。列出的第一個初始化是:

    init?(named name: String) -> UIImage // load from main bundle 
    

您可以從讀頭學到很多東西。我建議經常檢查它們。

1

1)它在「緩存圖像加載例程」部分。也許你需要在文檔中切換到Swift代碼?

2)教程和代碼示例很好的學習語言,平臺和良好的做法。您可以使用參考講座進行備份。

+0

如何在文檔中切換到Swift代碼? –

+0

在每個類文檔站點的右上角有「Language:Objective-C Swift Both」。只要選擇你所需要的。 –

+0

「在每個班級文檔站點的右上角?」你的意思是在Xcode的幫助窗口中?在哪裏,究竟在哪裏,附近有什麼?我沒看到它。 –

4

Swift處理初始化程序的方式很棘手。我建議「購買」免費的「The Swift Programming Language」iBook並閱讀有關初始化程序的章節。

「init」一詞出現在初始化程序的聲明中,但在調用它時不使用init這個詞。

的聲明是

init?(named name: String) -> UIImage 

問號告訴你,這是一個「failable」初始化。

相反字的init調用它,你把類的名字,就好像它是方法名和參數後:它得到了初始化方法,如initWithFrame:更復雜

UIImage(named: "name") 

。在這種情況下,它解析「with」,並創建一個參數「frame」。

我不打算涵蓋這裏的一切。 (我自己仍然在學習細微差別。)就像我說的,閱讀Swift iBook中有關初始化器的章節。