>> RHED史：歡迎 看到CS50研討會 -
介紹到iOS。
謝謝大家的光臨。
我希望你一樣興奮 因為我對的iOS。
去年，我花了CS50作為二年級學生， 我基本上學會了iOS的我
最終的項目。
，這是相當 -
嗯，這是不容易的，但也有 很多的支持在線教程。
我真的很希望這 研討會上，我給你們一個頭
開始iOS開發
>> 所以，在iOS開發方面， 主要有兩方面的事情，我們
今天想覆蓋。
首先，語言 -
該語言將是在 Objective-C語言。我們居然聽到
一些真正令人興奮的。
所以，你可以加入整個蘋果 開發者社區，並建立了一些
真正真棒應用程序。
>> 此外，iOS的7是美麗，希望， 對你們中的一些。
但它是有爭議的，我知道。
和主要，我想要做的是引導 您通過Objective-C語言，並且還
Xcode中，這是集成 開發環境，你會
工作在為iOS。
>> 因此，在Objective-C中只是一個字。 基本上，它是完全一樣的為C，
但有很多其他的事情。
因此，更嚴格的，它實際上是一個 超集C的這樣東西，你
可以用C做的事情，這是 基本上喜歡的pset 0到6，你
可以在Objective-C做的。
>> 所以，不要覺得害怕這個新 你要學習的語言。
你已經介紹了很多了， 因為你都做過C這個過去
學期，除了現在你要去 有很多更多的工作。
而我只是要帶領你通過一個 幾個例子強調了一些
的，我發現是關鍵的差異 真正重要的，當我得知
Objective-C的最後一年。
>> 好吧，事實上，這樣，其他的點 是，Objective-C的是，很明顯，
面向對象的。
我們將討論一點點 什麼是較晚。
基本上，它是怎麼樣，你曾與 結構在過去的這個pset中，與
節點和其他類似 這樣的事情。
只是，在Objective-C，一切都是 一個對象，你可要
繞過指向對象的指針 而非值本身。
因此，它只是一些重要的東西 要牢記。
>> 那麼，我們為什麼不先從幾個 C和之間的差異在句法
Objective-C的？
我想突出的＃include，你 眾所周知，標準IO.H在C和C + +中，用
在Objective-C語言版的，這 是的＃import，然後某種
頭文件。
在這種情況下，這將是UIKit中， 你知道，斜線UIKit.h。
它也可能是，你知道，MKMAPVIEW 你削減MKMapview.h如果你想
做一樣，你的應用程序裡面的地圖。
類似這樣的事情。
>> 因此，重要的是包括 現在已經改變進口。
但這個想法仍然存在。
你會被導入某種 頭文件到你的程序的。
>> 我也想強調的區別 之間的printf和NSLog的。
然而，正如我們前面所說，Objective-C語言 是一個嚴格的超集
C，表示printf的存在 在Objective-C，太。
不過，大多數人不使用它。
大多數人使用這個NSLog的，因為它 給你一個時間標記，我們會看到
後來在行動。
但是，它通常是一個更加有用 這樣打印出來的變量。
>> 我也想強調， 的NSLog發生在一樣的
如printf不佔位符值 -
所以為％d是一個int， ％f是一個浮點數。
不過，我想強調 這個非常最後一個 -
的NSLog％at符號 -
這是一個佔位符的對象。
正如我前面說的，Objective-C的交易 幾乎大部分的對象，
所以這會在使用的時候你 要打印出來，也許，也許一個
的NSArray或NSDictionary中， 或一個NSString。
>> 所以，也請注意，在我們的NSLog 聲明中，我們有一個@符號前面
的報價 -
即以表示字符串，現在， 在Objective-C的對象。
他們不再是簡單的字符明星。
他們的對象，並 同樣的對待。
>> 所以，這真的很重要，當 您使用的NSLog它需要在一個NS
字符串，這意味著你將有 包括一個在前面你
引號。
這就是為什麼你看到的，在這裡，所有的 我的函數調用來此的NSLog，我
有一個在引號的前面，甚至 雖然在％D和％F的是
從C都是一樣的
>> 有任何疑問，這麼遠嗎？
我會盡力去通過這個很快，所以 我們可以有更多的時間去工作
在Xcode和Objective-C，所以 那你們可以得到更多的
熟悉它。
>> 接下來，我想強調的東西 概念很重要。
因此，在C中，大多數事情都是函數。
我們做一個函數調用。
我們聲明函數這樣，用 返回的第一類型，則
函數名，括號，然後 無論參數和類型
這些爭論，我們想傳遞英寸
和Objective-C，因為一切 是一個對象或類 -
如此類和對象有兩個條款 大多是互為同義詞，
所以我可以使用它們互換 整個研討會。
>> 但是，你會看到，我們在方法 Objective-C語言，而不是功能。
和方法屬於對象。
因此，正如，也許拿 例如，節點 -
我們的類型[聽不清]
從節點6的pset或5 -
我們有一句話，房地產， 或下一個節點的指針。
方法是簡單的內部函數 的某種結構。
>> 所以，在這種情況下，該結構將是 的對象，則該方法是
東西屬於一個對象。
這是你將如何聲明， 排序，方法。
你會開始，再次返回 類型 - 所以，我試圖色
這裡編寫的關鍵詞，讓你們 可以看到，至少格式化
函數之間的相似性 聲明和方法聲明。
所以，你開始，你就知道，一回 類型 - 在這種情況下，它是一個數組，或
一個NSArray指針 -
然後你有這樣的方法。
然後，有趣的是在這裡 那不是有括號，我們
有這些冒號。
然後，在我們的論點面前，我們 放，再次，在括號中的類型
我們的論點。
>> 所以，現在我試圖使 之間，你知道，正和比較
數，因為他們 都喜歡整數。
然後，另一 是NSUInteger類型。
然後，用Objective-C中，當你 希望有多個參數的
你的方法子句，你，就， 他們分開了一種這樣的 -
我不太知道如何來形容它， 但你這是怎麼的一個很好的例子
可以有多個參數在裡面。
>> 你可以，當然，只是完全 忽略andArray結腸的NSArray
如果數組你想只是一個方法 它接受一個參數。
是的，問題。
>> 觀眾：是既NSUInteger和 可以採取在NSArray的參數
內的NSArray？
>> RHED石：是的。
所以，讓我來解釋一下。
所以，是的。
因此，問題是有NSUInteger和 NSArray的*類型的參數，
這就是正確的。
所以，你總是要指定什麼 您的參數的類型是。
在這裡，我想向你介紹 在一定的語法和詞彙的
Objective-C語言，所以這些都是實際類型 你會被處理。
>> 正如你會發現，陣列 是那種不再，，
簡易支架的東西。
他們的對象。
儘管如此，如果我們去到下一個 滑蓋，我們可以看到，我們可以
硬編碼一個NSArray在Objective-C與 前面只是一個符號時
括號。
我不是，實際上，肯定這是否 我句法硬編碼的數組
正確的C版本，但是這 應該是在C數組。
>> 所以，這是你會怎樣，你知道， 也許使用的功能或
我們前面創建的方法。
對不對？
所以，這是我們宣布我們 功能和我們的方法。
現在我們想使用它們的 我們的節目，這是
我們如何做到這一點。
因此，在C中，你會，你知道， 也許，一個bool b，我們將其設置為
相等的功能，然後 您傳入的參數。
>> 在Objective-C，這是很 同樣的事情。
你的NSArray * my_array，並且它的 要平等 - 現在，唯一的
這裡的區別是這個對象的事情， 我已經用黃色突出顯示，並
你可以看到，在C，有 沒有其他的黃字。
而這是因為方法屬於 具有一定的對象。
所以這就是為什麼我需要有一個對象 有點那個，，調用此方法的
數字零，然後 在NSArray的A，B，C，D。
上有問題嗎？
>> 我們將看看這些概念 不一會兒，當我們進入一個演示。
確定。
現在，我想談一點簡要 關於Xcode的5，這是
集成開發環境 你會在使用。
我知道很多你，或者你們中的一些， 沒有蘋果電腦，這是一個問題
因為Xcode是不可用 適用於Windows和PC。
不要問我為什麼，但可能 -
是的，企業。
不管。
但無論如何，所以，我道歉，如果一些 你必須下載某種
適用於Mac的虛擬機 為了運行Xcode中5。
但它是一個非常漂亮的 軟件使用。
>> 因此，在我們潛入任何形式 演示的，我只是想告訴你一個
什麼樣的Xcode看起來像在你的圖片 窗口，然後還談什麼
這整個空間是什麼。
因此，它有點像學習如何 使用Microsoft Word，除非你想
熟習所有 不同的東西，
是怎麼回事。
>> 因此，首先，我要指出你 到工具欄上方。
你會看到，在頂部， 你必須將文件名 -
或者，其實，你的項目名稱 然後你的文件名。
注意的發揮， 停止按鈕。
這些是那些你會出現 使用上的運行您的應用程序
模擬器 -
在iOS模擬器。
這會自動自帶的Xcode 5， 所以你不必擔心
下載某種模擬器。
您只需按下播放和 然後運行你的應用程序。
而且你可以玩弄你， 你會看到它是如何工作以後。
>> 然後，在該中心，當然是 在那裡所有的漂亮的代碼是
要去。
然後，在左手側，你會 那種有這個，，文件夾 -
導航 -
然後，您還可以看到，沿 與該文件夾圖標，有一個
一堆其他的圖標那裡， 以後會有用的。
>> 然後，在右側是一個實用 區，您可以用合作
一些對象，並指定你 知道，什麼樣的顏色應該是什麼
文字字體應，等等。
雖然，你做的一切 在公用事業領域，你可以
做代碼。
所以，我會去通過兩個 使用，簡單地說，沒有代碼的例子
所有 - 或非常少量的代碼 -
詩句的所有代碼，只是讓你們 知道你可以和不能做什麼
Xcode和Objective-C語言。
>> 然後，最後，向下在底部， 你有調試區域。
所以，你不必再運行GDB， 等等，在您的程序。
它會自動為您完成。
而且你還可以打印 東西到這個區域。
因此，實際上，後來，我們將通過 mario.c，如果你們還記得
即，在Xcode。
所以這應該是樂趣無窮。
>> 然後，只需把它帶回 Objective-C語言，我想突出什麼
你可以用if語句做。
所以，你知道，因為Objective-C語言是一種 的C超集，你所做的一切就是，
從字面上看，相同C.你只是 有輕微的差異。
所以，你會因為如果一個通知的形式 聲明仍然是相同的 - 你有
如果，然後你必須用括號 的內部的狀態下，它再
大括號不管你 想要做的有內部。
>> 不過，我希望把這個幻燈片起來 這裡，只是為了說明的是，
因為我們處理的對象現在， 我們將不得不使用這些東西
所謂的喜歡，等於字符串， 的是，巧合的是，一個方法
字符串或一個NSString對象。
所以，總之，在這種情況下，是一個NSString 對象，並且它有一個稱為是法
等於字符串，然後我們傳遞 在一個硬編碼字符串，看看
無論這些都是平等的 到彼此。
>> 有任何疑問，這麼遠嗎？
確定。
而且，我想去過 for語句也。
>> 因此，舉例來說，如果我們想回圈 在一個串中的C的長度，這
應該是熟悉的。
而且，在Objective-C，我想 突出排序這個，，
方法中調用計數。
嗯，其實，讓我 剛收回那句話。
計數是陣列的方法。
然而，它更具體地 數組，這就是為什麼你的財產
可以使用點符號。
但我並不想進入太多 這種概念上的東西，我只是想
向您展示如何將事情看 像在Objective-C與C。
>> 而且，我也想指出的是， 儘管我一直在使用NSUInteger
在我所有的我的在Objective-C的前面， 您還可以使用int，因為int是
在Objective-C完全有效的，也。
是嗎？
>> 觀眾：難道僅僅是 文體，或者是 -
>> RHED師：是啊。
所以，你會看到 -
所以，問題是在於， 只是一個風格問題。
正如你所看到的，我有樣的，，星 星號的東西倒在底部，並
該鏈接將帶您到一個堆棧溢出 形成，如果有人解釋
在一個int的區別 NSInteger的和NSUInteger。
所以，你可以約稍後閱讀。
這些幻燈片將，當然， 提供給您。
>> 讓我們來看看。
好了，真棒。
所以，這也包括在滑動 因為我認為這是一個偉大的
網站，為您介紹 Objective-C的語法。
因此，實際上，我們為什麼不搬到 Chrome瀏覽器，並檢查了這個網站？
>> 右。
所以，我想告訴你 你們這裡是這樣的形象。
所以，這是，排序的，將是什麼 你會看到裡面的任何
Xcode的文件。
其實，我們為什麼不只是拿一個 瞬間，那種，藉此英寸
>> 所以，這本書 -
這就是對象 我們正在處理。
然後，它顯然將是 從其他對象繼承的，但
你不必擔心。
然後，它也許具有 一些成員變量。
>> 我想告訴你最重要的事情 是實例方法，在這裡。
因此，實例方法來表示 這個減號。
然後，你會發現，我們 已經開始看到範式
為方法聲明，對不對？
返回類型，方法名，和 的說法，那麼類型，並
然後是參數的名稱。
而這個減號意味著它是一個 實例方法，這意味著
這些方法僅適用於 已經實例化的對象。
>> 對比的是，方法用加 簽署在他們面前的是類
方法，這意味著你可以調用 這些方法，即使你沒有
一個對象創建的呢。
所以，一個明顯的例子， NSString的是一類。
並且可以調用，例如， 關於NSString類方法 -
實際的一樣，字的NSString。
>> 然而，為了使用這些 方法，你居然
需要創建一個字符串。
例如，NSString的明星字符串等於 在引號，你好世界。
然後，你可以使用這些方法 -
實例方法 -
上的hello world字符串。
所以，這之間的差 實例方法和類方法。
>> 而且，我們只是覆蓋這部分。
屬性是另一件事是 裡面的對象，基本上是這樣。
而你與他們聲明 該物業在關鍵字。
您有這些選項，在這裡， 我稍後會解釋時，
我們進入一個演示。
是嗎？
你好。
>> 觀眾：你能不能放大，好嗎？
>> RHED師：哦，是的。
抱歉。
>> 觀眾：謝謝。
>> RHED師：那應該是好了很多。
>> 觀眾：是啊。
謝謝。
>> RHED師：是啊，請提醒我，如果 我忘了放大或縮小。
所以，這就是我想要的 向你介紹 -
哇，這是一個很大 -
本網站。
所以，讓我們回到我們的幻燈片。
>> 其實，現在讓我們花一點時間 潛入的演示。
因此，我們將開始與 新的Xcode項目。
所以，如果你打開Xcode中所有的 你的機器，它應該把你的一些
頁如果說，像，無論是開 一個現有項目或新
項目，你應該 單擊一個新的項目。
然後，應該採取 你到這個畫面。
是嗎？
>> 觀眾：如果我們沒有在Mac， 那種我們只是寒心？
>> RHED石：還是看的 有一個人，是的。
是啊。
你可以冷靜下來了。
確定。
>> 所以，我們要首先做到，現在怎麼辦， 是，其實，我們要做的一個
單一視圖的應用程序。
所以，如果你會發現，什麼是偉大的 關於Xcode和蘋果支持
開發商是，你有很多的 模板與已工作。
你可以，例如，使 主從複合應用程序。
你可以做一個遊戲 -
實際上，我不會進入遊戲， 因為遊戲是一個不同的故事
為iOS開發。
而且他們那種分開， 所以我不會去考慮這樣做。
>> 然後，你已經基於頁面 應用程序。
你有一個標籤的應用 -
所以喜歡，例如，美國銀行 可能有，像，一個標籤式的應用程序。
這是那些，你有 這些按鈕在底部。
然後，你有雪碧套裝遊戲。
>> 或者你可以從頭開始工作，這 就是我們稍後會做的。
但是，讓我們，首先，開始 一個單一視圖的應用程序。
然後，它會要求一個產品名稱， 我們可以做測試。
組織名稱 -
因此，組織名稱， 公司標識 -
這些都是重要的，如果你打算 把你的應用程序在App Store。
除此之外，你的代碼將 運行精絕沒有這個。
>> 這將是重要的，如果你 想要的 - 所以，本身一樣，把你的應用程序
到您的手機什麼的，和測試 出來，你知道，在現實生活中 -
這將是很重要的。
這趨向於通常與相關聯的 一些開發者賬戶的
與蘋果。
>> 所以，我知道，也許很多你 不會有任何開發人員帳戶。
我知道大學有一個。
我覺得CS有一個。
但是，你可以發郵件給我，我會盡力 去弄清楚你。
但現在，我只是把 一些佔位符的東西在這裡。
>> 而且你可以，當然，在這裡，選擇 你是否希望它是純粹
iPhone，iPad的中，或兩者兼而有之 -
普遍應用。
所以，現在，讓我們做通用的，只是 看該平台的兩側。
>> 讓我們來看看。
所以，現在，我要救 它在某種文件夾。
哪裡並不重要 - 你 以後可以隨時移動。
而且，現在，我們被帶到 我們的Xcode項目。
我不會擔心這一切。
我建議不碰任何 這一點，除非你確切地知道
你正在做的。
所以，這一切，只是忽略 在大多數情況下。
你不需要去觸摸它，如果你 你搞砸了一些東西在這裡，它
變得有點棘手。
>> 那麼，我們為什麼不研究 在文件
左手側在我們的導航儀。
在這裡，我們有AppDelegate.h。
我們有AppDelegate.m所以，你會 通知，我們的頭文件，其中
結束點H，和我們有 實施 -
其實，讓我放大。
確定。
讓我放大。
>> 對，所以你有頭文件和 你有實現文件。
其實 -
確定。
這是一個有點怪異， 但忍耐一下。
然後，因為我們選擇的單一視圖 應用程序中，我們將要
正在與故事情節。
>> 所以，故事情節是什麼，蘋果 已經拿出來真正幫助
開發人員快速原型 他們的應用程序。
所以，這是您可以在其中創建 而不需要編寫一個應用程序
一行代碼。
然而，在我們的單一視圖的應用程序， 我們做什麼，當然，有一個
文件為我們的觀點，這 是一個視圖控制器。
因此，我們有報頭和 實現文件，在這裡。
>> 而且，我現在要縮小，因為 我們需要在腳本的工作。
所以，這是我們的看法。
如果我們簡單地說，運行應用程序現在， 有沒有什麼令人激動的事情。
所以，你會看到這個白色的屏幕。
好不好？
>> 而且，在我們的公用事業領域，我們可以添加 一堆不同的東西出來。
所以，當你處理屏幕 在iOS中，視圖控制器是
封裝的對象， 排序的，您的意見。
因此，一個視圖控制器總是 已經稱為屬性視圖。
而這一觀點，通常情況下，包含， 你知道，你什麼
想在屏幕上看到的。
>> 那麼，好吧，就讓我們通過將啟動， 也許是，也許一個標籤。
所以，讓我們把標籤放在那裡 -
把它貼在中間。
所以，現在我已經點擊標籤，我 可以進入屬性檢查器
並開始改變它的值。
讓我們把它叫做CS50顏色。
>> 而且，我還可以改變字體。
而不是做系統，因此，它是 在默認情況下，我們可以做一個自定義的。
我們可以改變 -
你知道，超輕，使其32。
然後，我們可以讓我們的信箱更大。
>> 觀眾：你認為你可以放大 在短短一個多一點，也許？
>> RHED師：是嗎？
確定。
>> 觀眾：只需輕點嗎？
>> RHED師：讓我們來看看。
工作的呢？
>> 觀眾：剛才通過的Xcode？
>> RHED施：當然。
確定。
真棒。
>> 觀眾：根據標籤？
標籤？
>> RHED石：那是什麼？
>> 觀眾：什麼下拉 是該標籤下？
>> RHED師：那麼，問題是什麼 下拉是標籤下？
它應該簡單地說，是在這裡。
我想這是一個立方體的事情。
但通常，這是默認 -
我只是到這裡 直到我發現有一個標籤。
是啊。
>> 所以，現在，我們有我們的標籤。
讓我們來居中。
和Xcode給我們指引 定心對象。
所以，現在讓我們再次運行我們的代碼。
>> 我們走吧。
因此，我們有CS50顏色。
現在，讓我們把一個按鈕 在那裡，對不對？
因為我們想使 這個互動。
所以，讓我們把一個按鈕在這裡。
我們將在這裡叫這個按鈕“點擊 繼續“，我們將圍繞它，也
事實上，它已經居中。
是啊。
>> 所以，現在我們有一個按鈕。
如果我們運行這個再次，我們要 這裡有一個很好的小按鈕。
我可以點擊它，但它不會做 任何事情，因為我們沒有做
用按鈕做任何事。
>> 那麼，讓我們來創建另一個視圖，對不對？
因此，讓我們說我想挖掘 那個按鈕，我想
去到另一個頁面 -
另一種看法。
我什麼都做的是，我可以創造 一個視圖控制器，對不對？
現在，我會點擊我的按鈕，然後， 重要的是，我要
點擊 - 或 -
是的，我按鍵盤上的控制。
控制。
按一下按鈕，然後拖動。
>> 所以，記得按住控制鍵。
讓我們做一遍。
所以，保持控制，單擊並拖動 你想要做什麼。
確定。
>> 而現在，我有幾個選擇這裡。
我既可以推，或者我可以做一個 模態的，或者我可以做一個自定義的。
推的是只有當你有一個 導航控制器。
眼下，我們的第一個觀點 控制器不是任何內部
導航控制器。
因此，導航控制器是一個 ，讓你的後退按鈕
iOS的應用程序，你有，你知道， 最重要的是，有點厚吧 -
在那裡你可以回去，或 向前，等等。
現在，我沒有那個。
所以，這就是為什麼我不能做一個推。
>> 所以，我點擊了推 小心，這裡。
而實際上，我們來運行代碼， 它應該崩潰在我身上。
只有當我按下按鈕 雖然，所以 -
右。
所以，這是不好的。
>> 而且，正如你所看到的，在這裡，我們 有錯誤消息。
因此，“推塞格斯只能用於當 源控制器由一個管理
比如用戶界面的導航控制器。“ 這樣，因為這不是一個內部
導航控制器， 我不能這樣做。
>> 所以，現在，我要回 文件夾，回到故事情節。
>> 觀眾：什麼是導航 控制器，再？
>> RHED師：那麼，現在我會告訴你。
讓我們來看看。
所以，我要點擊這個觀點 控制器，然後我會去
最多的產品 -
其實，不，對不起 - 編輯。
我要去進入 -
其實，我有沒有點擊它？
號
我們走吧。
我要漲成編輯器，下井 嵌入到，然後導航
控制器。
>> 確定。
而且，我的工作區看起來非常凌亂， 讓我們清理它。
所以，這一切都是故事情節。
並以這種方式 -
OK，停止 -
我可以快速構建的東西 像這樣。
然後，我現在可以回去了，你知道嗎？
>> 但是，這是種無聊的，對不對？
所以，我想要做的是，我不想 做，只是簡單地說，一個視圖
控制器。
比方說，我想真正做一個 表視圖控制器，這樣我就可以把
一些漂亮的顏色，到表中。
>> 所以，現在我已經把我的表視圖 控制器，我需要把它連接回
從這個按鈕將 視圖控制器。
所以，我需要做我的控制， 點擊，拖動的事情了。
現在我能做的推送，因為我嵌入 它導航控制器的內部。
>> 觀眾：導航控制器剛 允許你從一個地方去的地方？
>> RHED石：是的。
所以，更在技術上，它是 一個對象，其中 -
所以，裡面的導航 控制器對象，它
跟踪數組。
而且數組保存所有後續 查看控制器。
這就是為什麼當你按下回來， 返回到前一個頁面。
因為導航控制器 對象，或者說需要照顧的代碼
這個對象，具有保持一個數組 追踪這些視圖控制器，並
然後，你知道，DQ視圖 控制器和給你回
前一個。
>> 所以，這是技術性的東西，但是 -
我會在以後告訴你 代碼中，如果我們有時間。
我種的時間不多了，但 -
>> 因此，與表視圖， 我們可以做的是 -
它通常是自動設置 動態原型 -
我們要讓它靜態細胞， 否則我們將
碰到一些問題。
>> 然後，讓我們說我要去 有一個部分。
因此，部分就像是 -
如果你見過的音樂應用程序，當 你有藝術家，節會
是A的通過Z's -
字母 -
然後，你知道，個人 行會是藝術家的名字。
所以，什麼是酷在這裡，是我可以 訪問所有內部對象
通過這個我的故事板 下拉菜單了。
>> 所以，我要點擊我的部分， 我想，你知道，也許五排。
然後，每行內， 我想提出一個標籤。
我要去調用這個藍色。
然後，我想提出一個UI視圖，你 知道了，也許是因為，像一個小盒子。
>> 所以，我可以向人們展示 色的預覽。
我會回去的財產和 改變顏色，哦，我不
知道，這一個。
>> 然後，通知還，在這裡，當我有 配件，我可以有很多
不同的配件 您通常看到的。
披露指標，細節，或 查馬克，或者乾脆只是細節。
所以，也許我們可以做的一樣，披露 指示器，例如。
>> 然後，我們為什麼不把這些，副本 粘貼它們，並把它們放入
接下來的表行。
因此，我們可以把這種黃色。
我可能要延續這一點。
讓我們把它發黃。
並且以這種方式，我們可以複製 我們的方式粘貼下來。
那是什麼？
紫色。
>> 所以，這些都是典型的CS50 顏色，你見過在課堂 -
實際上，對不起 -
或者在網站上。
希望你們能看到 我在做什麼在這裡。
確定。
最後一個。
>> 觀眾：你是如何加入 該行最初？
>> RHED師：那麼，問題是，如何 我才添加的行開始？
我走進這個表款 - 或者不過，我可以
選擇該表款 -
然後，在這裡，我更新 的行數。
>> 而且，讓我希望這個工程。
確定。
讓我們來看看，如果這個工程。
哦，完美的，真棒。
確定。
當我建立我的演示，一些 事情沒對齊的，所以，感謝
掌聲。
>> 是啊。
那麼，讓我們來看看。
我們將讓這個9只是為了讓 一切 - 或者實際上，我們只
把所有這些為披露 指標。
然後，我想告訴你，太， 是我怎麼可以把每那些
表行，並讓它們進行交互 -
哦。
號
>> 呵呵。
另外，我想告訴你 -
在這裡，我可以把標題我 導航控制器，對不對？
所以實際上，你會發現，只要我 嵌入在這個視圖控制器
導航控制器，我們看到 在我們的這個頂部導航欄
故事情節的代表性 的視圖控制器。
因此，這給了我們一樣，視覺， 排序，引導我們的可視屏幕。
這顯然會 是導航欄。
>> 而我想要做的很快， 現在，被放置在另 -
所以這個表視圖控制器我做了 取其中之一，並拖動它
在這裡，這是什麼讓我 很快，真的，創建一個表視圖
控制器。
如果我們有足夠的時間，雖然，你會 看到，編程，這是一個
點點更棘手創建一個表 視圖控制器，因為有
有一對夫婦的一些方法 需要你，排序，寫
在為了使表視圖 要正確顯示控制器。
>> 不過，我只是想告訴你，現在， 在那裡，如果我拿這個的一個例子，
例如 -
我已經把在另一個視圖控制器。
現在，讓我們說我想控制 按ALT我的第一個藍色
表行到這裡。
我想打電話給這個藍色。
然後 -
讓我們來看看。
我的看法了，我可以改變 背景為藍色。
>> 因此，通知，在這裡，這個下拉 菜單還為您提供了所有的層次結構
這些對象。
因此，一個重要的事情要注意，在這裡， 是，所有的這些東西，在這裡 -
此表視圖控制器，表 視圖，表視圖部分，表視圖
細胞 - 所有這些都是 對象，在代碼中。
所以，你知道，一個標籤，現在是下 內容視圖，等等。
等等等等。
>> 所以，如果我們運行這段代碼，我們 應該看到的東西 -
如果讓這來看看 - 是啊。
那麼，我們走吧。
但是，如果我們不這樣做，沒有 這些其他事情的工作。
對不對？
所以只有這一個工程。
而且，為了時間，我不會 去成，你知道，把
下其他的人。
這是結束時， 排序的，故事情節 -
我想向大家展示 你的腳本。
>> 而且，我確實有一個摸索出的例子， 實際上，就在這裡。
所以，這就是故事板 我以前所作。
所以，你可以看到，這是 我的導航控制器。
然後，我有我的第一個視圖控制器， 然後，我有我的表視圖控制器，
然後我把所有這些 -
所以以前，我是做 一些非常不同。
所以，原諒那些東西。
也許過一會我會前清理 我把它送上生產。
>> 但是，如果我們運行這個，我們拭目以待 所有的選項
提供給我們。
除了我沒有做背景 這些顏色。
所以，漂亮的簡單應用程序。
>> 現在，讓我們嘗試解決 這種編程方式。
確定。
因此，要做到這一點，我們只是要 開始一個新的Xcode項目。
我們會做一個空的應用程序現在， 因為我們不希望有
故事情節。
所以，我只是限制自己不 使用任何腳本，以及一個
空的應用程序不會 給我一個腳本。
這僅僅是為了防止 我作弊。
讓我們來看看。
等待。
難道我 -
是。
確定。
>> 右。
所以，在這裡，我們只剩下 但沒有別的代碼。
所以，讓我搬這個窗口 略微超過。
右。
正如你可以在這裡看到，唯一的文件 我們給出的AppDelegate.h和點
m，且我們沒有 故事情節了。
>> 因此，如果我們運行這個，我們仍然要 到達白屏，感謝上帝。
OK - 白色屏幕，但沒有別的。
而且，這裡是重要的組成部分。
這是那裡的行動發生。
在以前的版本中，有 這裡通常沒有代碼，但
故事情節主要提供 此功能代碼的一部分。
我不會去到如何的詳細信息。
>> 而我們現在要做的是，我們要 走在這裡，和這個小空間
再次開始創建我們的應用程序。
所以 -
是嗎？
>> 觀眾：縮放？
>> RHED史：縮放。
是的，當然。
確定。
我會打字，所以這不應該 事情太多了。
確定。
>> 因此，首先，請記住，我們想創造 導航控制器，對不對？
而且，正如你可以在這裡看到，Xcode的 做一個真正偉大的工作
自灌。
所以，你會發現，該名稱 一切是一個很多的時間比
平常，但Xcode的填充它給你的。
這樣我就可以直接按Enter鍵。
>> 所以，我想創建一個UI導航 控制器指針，我可以調用它
navigationController。
現在，我該怎麼做呢？
這個等號後，我需要，第一， 記憶裡創建它。
所以，我打算做NavigationController 頁頭 -
所以，這是類似的malloc， 您在C中用到的傢伙 -
然後，我將初始化它。
>> 所以，這真的很重要，任何 您創建的對象，你要
alloc和初始化它。
這將創造它， 內存裡面instantialize它，
現在你可以使用它。
沒事吧？
如果你不這樣做，你的對象做 不存在的，你會碰到一堆
的問題。
>> 然後，我要創建 一個視圖控制器，對不對？
所以，我想創建一個的UIViewController 明星 -
所以，一切都在一個指針 Objective-C語言，而我要做的事情
類似的東西，在這裡 -
ALLOC，初始化。
確定。
>> 然後我什麼都做的是，我 去 - 所以，請記住，當我們做
在導航控制器嵌入？
這是你如何做到這一點的代碼。
你要做的navigationController
pushViewController -
>> 觀眾：[聽不清]。
會發生這種情況對我們來說，還是 - ？
>> RHED師：哦，是的。
號
它喜歡我更好。
不，它會為你工作了。
所以，這些都是方法。
所以pushViewController是一種方法，並 還更具體地，它是一個
UI的實例方法 導航控制器。
因為我要創建我的UI導航 控制器的明星，然後我
可以調用這個pushViewController我 的用戶界面導航特定實例
控制器。
>> 觀眾：我們有沒有做確切的 一句話，或者它已經為它存在嗎？
>> RHED石：是的，因為它是一個方法。
這就像一個函數。
這就像printf的。
這就像scanf函數。
這就像strcompare。
除了它知道你可能要 型，並發現它會永遠
拿出的東西都是 法律上允許你。
所以，如果沒有顯示在這裡， 那麼什麼是錯的。
>> 所以，pushViewController。
所以，現在，我要推 我新創建的
的UIViewController，然後，動畫 -
也許不是。
因為這將是 第一個視圖控制器。
我的意思是，即使我做的動畫， 它可能不會出現，因為
它的第一個畫面。
>> 並記住括號。
所以，請記住，我們是如何使用括號？
並在括號裡面， 在一個對象的方法調用 -
所以我們的目標是導航 控制器，該方法是一種推
視圖控制器的動畫。
看看它是如何將兩個參數， 他們正在通過排序的，分離的，
也就是說，和一個冒號。
因此，Objective-C語言試圖使那該多好 和您輕鬆大聲讀出 -
你的代碼 - 並使其半， 排序的，是有意義的。
>> 但是，這樣做只是這 是不夠的。
讓我縮小了。
這樣做只是這樣是不夠的 得到了什麼，我們得到了以前。
所以在這裡，你會發現，有 其實不會成為任何形式的
酒吧，在這裡，對不對？
有沒有導航欄，這意味著 我們還沒有得到它。
>> 我們可以測試出來，也通過， 也許，改變的背景
的ViewController，對不對？
ViewController.background- -
啊。
那麼，怎麼看的ViewController沒有 背景顏色，即使我
要訪問它？
那是因為的ViewController 是一個容器的看法。
因此，它有一個視圖屬性， 然後有一個背景顏色。
>> 而且，我可以將它設置，有點繁瑣， 通過調用顏色
上的UIColor對象。
所以，在這裡通知，redColor是一個方法。
它的UIColor的類方法。
因為我沒有創建一個 一的UIColor，才能真正的實例
調用它的方法。
我只是，只是，把它稱為 上式般的名字。
我一樣，把它稱為對整型，如果整型過， 像中，一種方法它，例如。
>> 所以，如果我們運行這段代碼，我們將 注意到該背景是
其實不是紅色。
它仍然是白色的。
以及我們如何圍繞的就是， 你注意到了self.window。
也就是說，像，最終容器 為您的應用程序。
它是一個包含最終事 一切在屏幕上，用於
iPhone或iPad的應用程序。
>> 而且，方便，self.window 具有此屬性稱為
RootViewController的。
而這將是指針 裡面的第一個視圖控制器
你的應用程序。
所以，我們要在這裡做的，現在，是 以設置等於我們的導航
控制器。
對不對？
因為，從技術上講，導航 控制器是我們的第一個觀點
控制器。
它跟踪的另一種觀點數組 控制器，而我們這推
視圖控制器到該陣列 在導航控制器。
>> 所以，你不希望這樣做。
這不會真正幫助你。
你要做到這一點，如果你想要做的 導航控制器，其中大部分
你可能會因為你想要的 排序的，有某種，
像，菜單返回到或一些 主頁回去，而不是
空屏幕。
是嗎？
>> 觀眾：是不是不舒服 讓你放大了 -
>> RHED師：是啊。
所以，是的。
這是代碼，而現在 讓我們來測試它。
>> 那麼，我們走吧。
魔術隊。
因此，確定。
謝謝。
確定。
所以，現在，我們想要做的是什麼 - 所以， 那種我們有限的，在這裡，對不對？
我們可能寫的一切 這裡面的一個功能的。
但是，這並不是多麼的iOS開發 通常工作。
>> 所以，我們要做的是什麼，我們是 要建立一些新的文件。
但是，更具體地說，我們要 創建另一個Objective-C類，或
另一個對象 -
類和對象是可以互換的 在這裡。
而且，這裡的如何我可以，可能， 創建另一個U類控制器。
>> 因此，它的一個子類，你會發現， 在這裡，它是一個子類的
UI視圖控制器，但是我可以 在這裡把它叫做任何其他名稱。
我可以把這種CS50，我可以打電話 這個視圖控制器，我可以打電話
這胡說視圖控制器 -
任何我想要的。
這僅僅是類的名稱。
然而，這將是重要的 因為，從本質上講，我在做什麼
這裡就是我創造 另一個類的名稱。
所以，這將是一樣，有些 排序類型或對象。
因此，它應該是一個有點普通。
它不會是非常具體的。
>> 而且，我也想點 出這兩個選項。
因為我們正在做的一切內部 代碼，有時它是一個容易得多
引入一個接口文件，這樣 我可以從字面上拖放，如
我們先前做與故事情節 -
你知道，一個標號或一個按鈕， 或任何其他。
因此，xibs是文件，讓您 做到這一點，你必須把它掛
這個視圖控制器文件。
>> 所以，我要故意 不檢查。
通常我會檢查這一點，如果我 只是這樣做的iPhone或iPad，我
會檢查這一點，只是有一個 對，你知道的，iPhone或iPad的。
但自從我做通用的，我要去 後來創建了其中的兩個。
所以，我要故意 取消選中此。
>> 這也是非常重要的。
很多時候，我有錯誤 這個地方沒有檢查。
因此，很明顯，這個文件是不是， 有點像，包括進口或
這裡面的test文件夾中。
所以，我的代碼有完全不知道 這個文件的存在，並且
這造成了很多痛苦的 和調試的時間。
但是，只要確保這被檢查，以便 ，你知道，這樣做的目標
文件是這種應用。
>> 確定。
所以，現在我們已經創建了兩個新的文件。
並且這些文件看起來很空。
而且，事實上，讓我們也繼續 通過創建的廈門國際銀行文件。
所以，以前，我是在 可可觸摸下拉。
現在，我要進入用戶 界面觸摸，並且你可以看到，我
可以創建一個腳本。
>> 所以，即使我開始用空 應用程序中，我仍然可以使用
故事情節。
雖然，它得到棘手的條款 你想如何連接
那你的代碼。
所以，我不會去那裡。
>> 但是，我們想要做的 現在是創建一個視圖。
您可以選擇的 一個iPhone或一個iPad。
並且典型地，以表示 差異 - 如果你正在做一個
普遍應用 -
你要么把下劃線的iPhone， 或者你可以做一個Twiddly。
這其實並不重要。
它只是讓你與眾不同 哪種說法是哪個設備。
>> 所以，現在看。
我有，我可以一起工作的畫面。
因此，例如，我可以把一個標籤 在這裡，你知道的，我也可以把
這裡另一個按鈕。
我不會打擾改變 這裡的值。
>> 但是，什麼是重要的是在這裡 該文件的所有者 -
所以，我的iPhone裡面 認為，iPhone的xib文件。
而在這個導航區域向下或 下拉菜單，我想去的
文件的所有者。
這是真的 這裡重要的一步。
我想使類視圖 控制器，從而使這個xib文件是
將要與相關的 我的視圖控制器。
而且任何事情，我做我的看法裡 控制器編程是
將在這裡體現的。
>> 如此，但是，請注意 -
其實，讓我們這一觀點 背景藍色，例如。
或綠色。
然後，如果你會注意到，早在 這段代碼中，這是我們得到了我們的
導航控制器。
>> 儘管我們做了這一步，它的 仍然會是紅色的，不是綠色的。
還有一個原因。
這是因為，當我們inited 我們的視圖控制器，在這裡 -
對不起，這是一個有點瘋狂 -
當我們inited我們的視圖控制器在這裡， 我們inited的一般類型的其
的UIViewController。
好不好？
所以，我們甚至沒有做 用這個類。
>> 所以請記住，這就像一個類了。
它可以被認為是一種類型的，只是 為的UIViewController是一個類型。
並且為了使用，什麼 我們需要做的是將其導入 -
進口的ViewController -
並且，你可以看到，它 自動填充它為我。
所以，的ViewController -
而現在，在這裡，我可以改變這個 的UIViewController到的ViewController。
而現在，在這裡，我可以改變 這的ViewController。
>> 讓我們再次運行此。
它仍然是紅色。
以及為什麼它的原因 尚紅是因為 -
哇，那裡發生了什麼？
我們希望這個關聯廈門國際銀行 文件與視圖控制器。
然而，為了真正做到 這一點，我們需要進入這個。
而當我們做了init，我們想要做的 initWithNibName，然後我們要
做在字符串View_iPhone， 例如。
你可以在這裡忽略了捆綁。
>> 並且這將允許 我們，其實 -
嗯哦，有一個問題。
右。
>> 因此，有一個問題，因為在 我們認為xib文件，我們有一個標籤，
我們有一個按鈕。
不過，即使我們已經連接 這兩個，還有裡面什麼
ViewController.h或ViewController.m 反映這些
按鈕或這些標籤。
因此，我們需要寫那些為 視圖控制器的性能。
>> 所以，你這是怎麼聲明 一個屬性。
它需要在，通常 這兩個選項。
對我們來說，和本次研討會的目的， 我要說的是，在一般情況下，
大多數屬性都是非原子 和保留。
你可以通過谷歌搜索閱讀起來， 要知道，之間的差異
非原子和保留上，你 眾所周知，谷歌什麼的。
我會帶你到一樣，棧 溢出，那裡的人都會有
答案的差異 之間的那些。
但現在，這就是我們 要關注的。
>> 我們想使一個UI標籤，明星， 我們可以把它叫做任何我們想要的。
我們可以調用這個，你知道，標籤。
而且，我們將創建另一個 一個用於按鈕。
要記住，星號， 因為我們正在處理的指針
幾乎無處不在裡面 的Objective-C語言。
>> 不過，這仍然沒有解決 的問題，因為你可以在這裡看到。
其原因是因為，每當我們 要連接一個xib文件標籤或
按鈕的程序，或頭 和實現文件，我們要
加上這一段代碼 -
插座。
請注意，這是一個關鍵的字。
>> 而且，只要我完成打字 說出來，它應該有這些
兩個圈子，在這裡。
通常情況下，他們沒有填寫。
我不知道他們為什麼。
但通常情況下，你將不得不手動 通過去的這一邊連接起來
公用事業領域。
>> 所以，現在，我有我的標籤 選擇，我想拖這個新
引用插座到我的文件的所有者， 然後點擊標籤。
所以，現在，終於，這個標籤是 連接到該標籤。
而且這個標籤是什麼，我們要 使用編程方式來改變其
文字，其字體，它的背景 顏色，等等。
>> 那麼，我們為什麼不這樣做的 同為按鈕？
正如你會發現，對於該按鈕， 這是一個稍微複雜一點。
因為，我的意思是，你應該 按下一個按鈕，所以它得到了很多
對於用戶如何選擇 可以按下一個按鈕。
然後，我們將在後​​面上看到 我們可以將此接口連接​​到我們的
代碼，使其工作。
>> 所以，雖然現在，我們要連接 它以實際的按鈕
裡面的我們的代碼。
所以，我們去新引用插座， 然後執行按鈕。
現在，讓我們再次運行此。
嗯哦。
確定。
我不知道是怎麼回事了。
哇。
只是一個瞬間，在這裡。
>> 其實，我們為什麼不採取 看看另一個例子
時間的關係。
確定。
所以，這裡的更容易準備 例子的ViewController。
正如你可以看到這裡，我已經包括 的屬性
標籤和按鈕。
然後，這段代碼在這裡 -
這IBaction -
在這裡，以這個按鈕的連接。
所以你可以在這裡看到，觸摸裡面 被連接到選擇器
所謂的按鈕按下。
>> 所以，我們實際上可以經過 運動再次，在這裡，通過採取潤色
內，將其拖動到 文件的所有者，然後
點擊按鈕按下。
現在，讓我們運行我們的代碼。
所以，現在，這個按鈕現在工作和 將帶我們到下一個頁面。
>> 而且，在我們的視圖控制器而言， 這是一段代碼，把
護理按下按鈕的。
而且重要的是要注意在這裡，那 我創建了另一種類型的視圖
控制器稱為表 視圖控制器。
所以，這是類似於在背 故事情節，當我拖著之一
這些表視圖控制器 到故事板。
我創建另一個
>> 指針表視圖控制器， 的alloc和init-ing它，然後做
自點導航控制器， 推的ViewController，這個新的
的ViewController。
我已經設定動畫為yes， 因為現在在我的應用程序，我的
要真正看到動畫會 從主頁到表
視圖控制器。
>> 觀眾：你還是擔心 關於垃圾收集的？
>> RHED石：那是什麼？
號
所以，問題是，你有沒有 垃圾收集的工作？
所以，Xcode的4有一個像ARC，它是 自動引用計數。
因此，通常當你開始一個新的 項目，你會檢查，因為
沒有人真正想要對付 釋放內存之類的東西。
但我認為在Xcode 5，竟然沒有 在新項目的選擇。
因此，它會自動 這是否適合你。
是嗎？
>> 觀眾：你可以導出 PDF在你的腳本？
>> RHED石：是的，絕對。
因此，所有這些將被納入 源代碼，所以你們可以查出來
實際的Xcode項目吧。
是嗎？
>> 觀眾：但是，我的意思是一樣，我可以 打印與我的故事板的PDF？
如果我只是想導出 圖像顯示某人。
>> RHED師：哦，是的。
我想，也許，你可以只 採取一個屏幕快照。
是啊，送他們一個屏幕 拍什麼的。
是啊。
>> 那麼，讓我們來看看。
由於時間關係，我覺得 這是所有l可今天覆蓋。
但是，我知道這是，其實，只是 幾乎沒有觸及的iOS的表面
發展。
因此，請隨時與我聯繫，如果 您有任何關於iOS的任何問題
發展。
並希望，我就可以清理 一些用於源代碼
代碼文件，這樣您將有一些 非常好的例子，一起工作。
>> 除此之外，如果你們打算 到CS50 Hackathon，我可能會或可能
不在那裡，我可以幫幫忙 一些iOS開發了。
所以，非常感謝，伙計們。