>> 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开发了。
所以，非常感谢，伙计们。