1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Hội thảo] [iOS: Viết ứng dụng như một Boss] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam] [Đại học Harvard] 3 00:00:04,000 --> 00:00:08,000 [Đây là CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Được rồi, tất cả mọi người, lên iOS: Viết Apps như một Boss. 5 00:00:12,000 --> 00:00:16,000 Hội thảo này sẽ tập trung vào việc viết các ứng dụng cho iPhone 6 00:00:16,000 --> 00:00:19,000 và lần lượt viết các ứng dụng cho iPad, và do đó, về cơ bản chúng ta sẽ phải đi bộ qua 7 00:00:19,000 --> 00:00:23,000 một vài ví dụ về làm thế nào để làm cho một ứng dụng khác nhau, một trò chơi đơn giản như Tic Tac Toe, 8 00:00:23,000 --> 00:00:26,000 hoặc nếu bạn đang quan tâm nhiều hơn trong việc đưa ra một ứng dụng như một số loại trình đọc tin 9 00:00:26,000 --> 00:00:30,000 hoặc cái gì đó tương tác với Internet tôi sẽ nói về điều đó là tốt. 10 00:00:30,000 --> 00:00:32,000 Đây là chương trình nghị sự ngắn gọn của chúng tôi. 11 00:00:32,000 --> 00:00:36,000 >> IOS ứng dụng được viết bằng một ngôn ngữ được gọi là Objective-C, 12 00:00:36,000 --> 00:00:39,000 và vì vậy đây là một chút tương tự như C nhưng không thực sự ở tất cả, 13 00:00:39,000 --> 00:00:41,000 vì vậy chúng tôi sẽ nói một chút về ngôn ngữ riêng của mình 14 00:00:41,000 --> 00:00:45,000 và sau đó làm thế nào để xây dựng các ứng dụng iPhone bằng cách sử dụng chương trình này ứng dụng được gọi là XCode, 15 00:00:45,000 --> 00:00:48,000 nếu bạn không tải về nó cảm thấy miễn phí để bắt đầu tải về ngay bây giờ. 16 00:00:48,000 --> 00:00:50,000 Đó là một vài gigabyte. 17 00:00:50,000 --> 00:00:54,000 Nó nên được miễn phí trên App Store, vì vậy bạn sẽ cần phải có một máy Mac 18 00:00:54,000 --> 00:00:57,000 lý tưởng chạy phiên bản mới nhất của OS X. 19 00:00:57,000 --> 00:00:59,000 Nếu bạn không, không có vấn đề. 20 00:00:59,000 --> 00:01:02,000 Chúng tôi có các máy Mac trong trung tâm khoa học có sẵn để bạn sử dụng 21 00:01:02,000 --> 00:01:05,000 với XCode cài đặt, và do đó, cảm thấy tự do sử dụng những người phát triển. 22 00:01:05,000 --> 00:01:07,000 Nếu bạn muốn làm cho một ứng dụng, nhưng không có một máy Mac, đừng lo lắng. 23 00:01:07,000 --> 00:01:09,000 Có rất nhiều các nguồn tài nguyên trong khuôn viên trường cho rằng. 24 00:01:09,000 --> 00:01:15,000 Và như vậy thì chúng ta sẽ bao gồm 2 ví dụ lớn hơn của các ứng dụng khác nhau mà bạn có thể làm cho. 25 00:01:15,000 --> 00:01:19,000 Objective-C về mặt kỹ thuật là những gì được gọi là một bộ siêu của C. 26 00:01:19,000 --> 00:01:24,000 Điều đó có nghĩa rằng bất kỳ mã C cũng là mã Objective-C hợp lệ. 27 00:01:24,000 --> 00:01:29,000 Điều đó có nghĩa là chúng tôi loại ống ghi âm sẵn trên một số tính năng bổ sung cho C. 28 00:01:29,000 --> 00:01:33,000 Một số các tính năng này bao gồm không có bao giờ viết malloc một lần nữa, cảm ơn Chúa, 29 00:01:33,000 --> 00:01:36,000 không phải lo lắng về các con trỏ ngu ngốc và giải phóng họ và tất cả các công cụ 30 00:01:36,000 --> 00:01:40,000 bạn ghét về C, và nó là loại đi trong C-Mục tiêu. 31 00:01:40,000 --> 00:01:43,000 >> Bây giờ, Objective-C cũng có một thư viện chuẩn lớn hơn nhiều, 32 00:01:43,000 --> 00:01:47,000 do đó, có rất nhiều chức năng mà bạn nhận được cho bên trong miễn Objective-C. 33 00:01:47,000 --> 00:01:50,000 Nhớ khi chúng tôi đã viết PHP, chúng tôi nhận thấy rằng chúng ta đã đi từ 34 00:01:50,000 --> 00:01:54,000 ngôn ngữ này nhỏ nhất đến các thư viện khổng lồ của tất cả những điều điên rồ bạn có thể làm. 35 00:01:54,000 --> 00:01:56,000 Điều tương tự cũng xảy ra trong iOS. 36 00:01:56,000 --> 00:01:59,000 Có đối tượng cho những thứ như lịch Phật giáo, và bất cứ điều gì thực sự 37 00:01:59,000 --> 00:02:05,000 bạn có thể có thể nghĩ rằng có lẽ đã tồn tại trong việc thực hiện Mục tiêu-C. 38 00:02:05,000 --> 00:02:08,000 Phần Mục tiêu của Mục tiêu-C là tham khảo một cái gì đó 39 00:02:08,000 --> 00:02:11,000 được gọi là Lập trình hướng đối tượng. 40 00:02:11,000 --> 00:02:14,000 Đây là loại một khái niệm mới, nhưng chúng tôi đã thực sự chủ yếu là học 41 00:02:14,000 --> 00:02:17,000 rất nhiều những khái niệm này đã. 42 00:02:17,000 --> 00:02:19,000 Ý tưởng đằng sau Lập trình hướng đối tượng là bạn đang đi để cấu trúc 43 00:02:19,000 --> 00:02:23,000 rất nhiều mã của bạn xung quanh những điều này được gọi là các lớp học, 44 00:02:23,000 --> 00:02:26,000 và các lớp này được thực sự tôn vinh cấu trúc. 45 00:02:26,000 --> 00:02:30,000 Bên trong của một cấu trúc, chúng tôi về cơ bản nói ở đây là một điều, 46 00:02:30,000 --> 00:02:32,000 và điều này có thể có các thành viên. 47 00:02:32,000 --> 00:02:35,000 Ví dụ, một nút trong một danh sách liên kết có thể có những thứ khác 48 00:02:35,000 --> 00:02:38,000 giống như một giá trị, một con trỏ đến nút tiếp theo trong danh sách, 49 00:02:38,000 --> 00:02:44,000 và cùng nhau mà con trỏ và giá trị mà bao gồm trường hợp này một trong một cấu trúc. 50 00:02:44,000 --> 00:02:47,000 Các lớp học là rất tương tự, trừ 51 00:02:47,000 --> 00:02:50,000 các lớp học cũng có thể có các chức năng bên trong của họ. 52 00:02:50,000 --> 00:02:54,000 Khi ta khai báo một cấu trúc, chúng tôi chỉ có thể nói int n hoặc nút tiếp theo *. 53 00:02:54,000 --> 00:02:57,000 >> Bây giờ với C-Mục tiêu chúng tôi thực sự có thể đặt các chức năng 54 00:02:57,000 --> 00:02:59,000 bên trong những điều đó. 55 00:02:59,000 --> 00:03:03,000 Một điều mà các lớp học có thể làm là họ có thể kế thừa dữ liệu từ các lớp khác. 56 00:03:03,000 --> 00:03:07,000 Ví dụ, chúng ta sẽ xem xét một loạt các built-in Objective-C lớp học. 57 00:03:07,000 --> 00:03:11,000 Một trong số đó có thể là lớp học mà đại diện cho quan điểm cho màn hình, 58 00:03:11,000 --> 00:03:14,000 và do đó, bằng cách nói rằng tôi muốn thực hiện quan điểm của riêng tôi 59 00:03:14,000 --> 00:03:18,000 chúng tôi về cơ bản nói cho người nào đó tại Apple, mọi người có thể thực sự tốt đẹp, 60 00:03:18,000 --> 00:03:21,000 đã viết lớp này cho tôi, và nó xử lý những thứ như hiển thị các nút 61 00:03:21,000 --> 00:03:25,000 hoặc làm cho màn hình, và chúng tôi sẽ thực sự đau đớn 62 00:03:25,000 --> 00:03:28,000 để thực hiện tất cả những chức năng chính mình, và như vậy bằng cách đơn giản 63 00:03:28,000 --> 00:03:31,000 kế thừa dữ liệu, chúng ta có thể nói tất cả mọi thứ mà bạn đã làm trong lớp học mà 64 00:03:31,000 --> 00:03:34,000 Tôi cũng muốn bên trong lớp học của tôi, và sau đó tôi sẽ làm một số công cụ khác, 65 00:03:34,000 --> 00:03:37,000 cụ thể là thực hiện một ứng dụng. 66 00:03:37,000 --> 00:03:40,000 Đó là những gì mà thừa kế có nghĩa là. Chúng ta sẽ thấy một ví dụ cụ thể hơn. 67 00:03:40,000 --> 00:03:42,000 >> Và cuối cùng, quan trọng với lập trình hướng đối tượng là 68 00:03:42,000 --> 00:03:45,000 nó dẫn đến dữ liệu đóng gói. 69 00:03:45,000 --> 00:03:48,000 Trong một số vấn đề của chúng tôi đặt ra, chúng ta có thể có những biến lớn toàn cầu 70 00:03:48,000 --> 00:03:51,000 và globals ở khắp mọi nơi, và đó là cách chúng tôi muốn theo dõi của nhà nước. 71 00:03:51,000 --> 00:03:55,000 Với các lớp học, chúng ta có thể bắt đầu đóng gói thông tin bên trong của một đối tượng. 72 00:03:55,000 --> 00:03:58,000 Nếu chúng ta có một màn hình ứng dụng của chúng tôi, chúng tôi không thực sự cần phải có bất kỳ dữ liệu từ 73 00:03:58,000 --> 00:04:01,000 một màn hình bên trong ứng dụng của chúng ta về điều đó, 74 00:04:01,000 --> 00:04:04,000 và như vậy bằng cách đóng gói những thứ trong các lớp học này thực sự dẫn 75 00:04:04,000 --> 00:04:08,000 thiết kế mã tốt hơn, và điều này là có thể với một số tính năng bổ sung 76 00:04:08,000 --> 00:04:11,000 C-Mục tiêu. 77 00:04:11,000 --> 00:04:15,000 Cảnh báo trước, cú pháp cho Objective-C là chuối. 78 00:04:15,000 --> 00:04:19,000 Nó cũng giống như không có gì chúng ta đã thấy trước đây, 79 00:04:19,000 --> 00:04:22,000 vì vậy nó là một chút của một đường cong học tập để làm quen 80 00:04:22,000 --> 00:04:24,000 những gì heck thực hiện điều này có nghĩa là gì? 81 00:04:24,000 --> 00:04:27,000 Nhưng một khi bạn nhận được qua rằng đường cong học tập ban đầu, nó thực sự, thực sự trơn tru 82 00:04:27,000 --> 00:04:29,000 để bắt đầu viết các ứng dụng. 83 00:04:29,000 --> 00:04:33,000 >> Để khai báo một lớp, nói ở đây là lớp học của tôi, nó tồn tại, 84 00:04:33,000 --> 00:04:35,000 và có thể đây là một số điều mà tôi sẽ xác định sau này, 85 00:04:35,000 --> 00:04:38,000 Tôi sẽ nói @ interface. 86 00:04:38,000 --> 00:04:41,000 Tôi sẽ nói @ interface. Tôi sẽ cung cấp cho lớp học của tôi một tên. 87 00:04:41,000 --> 00:04:43,000 Và sau đó ở một nơi khác tôi sẽ nói @ end, 88 00:04:43,000 --> 00:04:46,000 và tất cả mọi thứ ở giữa giao diện và kết thúc @ @ 89 00:04:46,000 --> 00:04:48,000 là có được lớp học của tôi. 90 00:04:48,000 --> 00:04:51,000 Điều đó là có được những gì bên trong các tập tin. H. 91 00:04:51,000 --> 00:04:55,000 Cũng giống như trong C h tập tin. Về cơ bản nói ở đây là một số điều mà sẽ không tồn tại. 92 00:04:55,000 --> 00:04:57,000 Tôi không nhất thiết nói với bạn những gì họ làm được nêu ra, 93 00:04:57,000 --> 00:04:59,000 nhưng trình biên dịch cần phải biết rằng chúng tồn tại. 94 00:04:59,000 --> 00:05:04,000 Sau này trong các tập tin m của chúng tôi bởi vì m cho Objective-C 95 00:05:04,000 --> 00:05:08,000 là nơi mà chúng tôi đang thực sự sẽ xác định những gì các lớp làm. 96 00:05:08,000 --> 00:05:11,000 Cũng giống như các tập tin. C, chúng tôi cung cấp một thực hiện cho các chức năng. 97 00:05:11,000 --> 00:05:15,000 Bên trong của tập tin. M của chúng tôi, chúng tôi đang nói ở đây là những gì tất cả các chức năng 98 00:05:15,000 --> 00:05:18,000 bên trong lớp tất cả những gì họ làm. 99 00:05:18,000 --> 00:05:22,000 Và cuối cùng, bên trong của một cấu trúc, chúng ta có thể nói bên trong những dấu ngoặc nhọn 100 00:05:22,000 --> 00:05:25,000 int n hoặc nút * tiếp theo, 101 00:05:25,000 --> 00:05:28,000 và C-Mục tiêu chúng ta sẽ sử dụng từ khoá @ tài sản, 102 00:05:28,000 --> 00:05:31,000 và đây là những gì đang xảy ra để xác định tài sản, 103 00:05:31,000 --> 00:05:36,000 hoặc các chức năng, mà là một phần của các lớp học của tôi. 104 00:05:36,000 --> 00:05:40,000 >> Gọi chức năng trong Objective-C cũng là chuối. 105 00:05:40,000 --> 00:05:43,000 Khi chúng ta tuyên bố chức năng trong C, chúng tôi đã nói một cái gì đó như int foo 106 00:05:43,000 --> 00:05:46,000 và mở paren và sau đó đã cho nó một danh sách các đối số. 107 00:05:46,000 --> 00:05:51,000 Đây là những gì khai báo phương pháp hoặc các chức năng trông giống như trong C-Mục tiêu. 108 00:05:51,000 --> 00:05:54,000 Nếu tôi muốn khai báo một hàm hoặc một phương pháp 109 00:05:54,000 --> 00:05:58,000 nơi mà tôi đang nói là phương pháp thực sự chỉ là một chức năng đó là một thành viên của một lớp, 110 00:05:58,000 --> 00:06:01,000 do đó, loại hoán đổi cho nhau, nhưng không thực sự, 111 00:06:01,000 --> 00:06:03,000 bên trong phương pháp của tôi, tôi muốn tạo ra một phương pháp mới. 112 00:06:03,000 --> 00:06:06,000 Nó sẽ trở lại không có gì, do đó, nó sẽ là kiểu void. 113 00:06:06,000 --> 00:06:08,000 Đây là kiểu trả về của chức năng của tôi. 114 00:06:08,000 --> 00:06:11,000 Bây giờ chúng tôi có parens đây bởi vì tôi không biết. 115 00:06:11,000 --> 00:06:14,000 Tiếp theo là có được tên của chức năng của tôi, 116 00:06:14,000 --> 00:06:17,000 và cuối cùng chúng ta có một dấu chấm phẩy giống như chúng tôi đã có trong C. 117 00:06:17,000 --> 00:06:19,000 Có gì mới ở đây là anh chàng này ở đây. 118 00:06:19,000 --> 00:06:22,000 Dấu gạch ngang này thực sự là cần thiết, và điều này nói là 119 00:06:22,000 --> 00:06:26,000 phương pháp này ở đây phải được gọi là một thể hiện của một lớp học. 120 00:06:26,000 --> 00:06:29,000 >> Sau khi chúng tôi tuyên bố cấu trúc của chúng tôi, chúng tôi có thể nói một cái gì đó như 121 00:06:29,000 --> 00:06:32,000 struct n nút, và thực sự tạo ra 122 00:06:32,000 --> 00:06:35,000 hoặc instantiated một trong những cấu trúc như vậy mà tôi thực sự có thể bắt đầu làm việc 123 00:06:35,000 --> 00:06:38,000 với những gì bên trong của nó, do đó, dấu gạch ngang này có nghĩa rằng chúng ta phải 124 00:06:38,000 --> 00:06:41,000 khởi tạo các lớp học giống như chúng ta khởi tạo struct 125 00:06:41,000 --> 00:06:43,000 trước khi chúng ta có thể gọi phương thức này trên đó. 126 00:06:43,000 --> 00:06:46,000 Nếu tôi muốn bắt đầu thêm đối số cho phương pháp của tôi 127 00:06:46,000 --> 00:06:48,000 nó được chuối nhiều hơn. 128 00:06:48,000 --> 00:06:50,000 Dưới đây là tên phương pháp của tôi. 129 00:06:50,000 --> 00:06:53,000 Sau đó, tôi sẽ có một dấu hai chấm, và sau dấu hai chấm này nó nói ở đây đến một số đối số. 130 00:06:53,000 --> 00:06:56,000 Phương pháp này có một đối số. 131 00:06:56,000 --> 00:06:59,000 Các loại đối số của nó là một int, và tên của các đối số đó 132 00:06:59,000 --> 00:07:03,000 hoặc biến rằng tôi sẽ bắt đầu sử dụng bên trong của phương pháp được gọi là i. 133 00:07:03,000 --> 00:07:05,000 Một lần nữa, đây là phương pháp. Phải mất một đối số. 134 00:07:05,000 --> 00:07:10,000 >> Nếu bạn muốn để bắt đầu thêm đối số hơn nó được chuối hơn 135 00:07:10,000 --> 00:07:13,000 trong đó chúng tôi đã đại tràng nói ở đây đi kèm danh sách các đối số. 136 00:07:13,000 --> 00:07:15,000 Số đầu tiên là một số nguyên. 137 00:07:15,000 --> 00:07:17,000 Bây giờ, số thứ hai là thú vị. 138 00:07:17,000 --> 00:07:20,000 Biến rằng tôi sẽ được sử dụng bên trong chức năng của tôi 139 00:07:20,000 --> 00:07:23,000 được gọi là f, do đó, bên trong chức năng của tôi, tôi có thể nói 140 00:07:23,000 --> 00:07:25,000 f + = 1 hoặc một cái gì đó. 141 00:07:25,000 --> 00:07:30,000 Điều này ở đây về cơ bản là một chìa khóa cho rằng đối số hoặc tham số. 142 00:07:30,000 --> 00:07:34,000 Cũng giống như chúng tôi đã có cặp giá trị quan trọng và một cái gì đó như JSON hoặc mảng kết hợp 143 00:07:34,000 --> 00:07:37,000 Objective-C thực hiện các quyết định nói, okay, chỉ cần để nó thực sự rõ ràng 144 00:07:37,000 --> 00:07:39,000 khi bạn gọi một phương pháp tất cả các thông số này là gì 145 00:07:39,000 --> 00:07:41,000 Tôi đang thực sự sẽ để đặt tên cho tất cả. 146 00:07:41,000 --> 00:07:45,000 Khi bạn gọi một phương thức, bạn thực sự sẽ nói andFloat, 147 00:07:45,000 --> 00:07:47,000 và sau đó bạn sẽ vượt qua nó. 148 00:07:47,000 --> 00:07:50,000 >> Thật thú vị, một trong những điều này không có tên, nhưng tất cả các thông số khác, 149 00:07:50,000 --> 00:07:53,000 do đó, nếu chúng tôi đã có một đối số thứ 3, tôi có thể nói andFloat 150 00:07:53,000 --> 00:07:56,000 và một phao và như vậy. 151 00:07:56,000 --> 00:08:01,000 Khi tôi gọi những phương pháp này là tất nhiên của chuối, 152 00:08:01,000 --> 00:08:04,000 vì vậy nếu tôi có một đối tượng, và tôi xác định một phương pháp gọi là foo, 153 00:08:04,000 --> 00:08:09,000 và tôi muốn gọi nó, chứ không phải nói rằng foo mở / parens gần 154 00:08:09,000 --> 00:08:11,000 Tôi sẽ mở một khung. 155 00:08:11,000 --> 00:08:13,000 Đây là tên của phương pháp của tôi. 156 00:08:13,000 --> 00:08:17,000 Tôi sẽ đóng khung, và đây là đối tượng tôi gọi nó trên. 157 00:08:17,000 --> 00:08:20,000 Hãy nhớ rằng, tất cả những phương pháp này tồn tại trong các lớp học 158 00:08:20,000 --> 00:08:23,000 bởi vì các lớp học có thể có phương pháp xác định bên trong của họ. 159 00:08:23,000 --> 00:08:26,000 >> Ở đây tôi đã tự ý tạo ra một đối tượng của một số lớp, 160 00:08:26,000 --> 00:08:28,000 và đây là cú pháp để thực hiện điều đó. 161 00:08:28,000 --> 00:08:31,000 Có 2 bước để tạo một đối tượng. 162 00:08:31,000 --> 00:08:34,000 Bước đầu tiên là để nói rằng tôi muốn phân bổ không gian. 163 00:08:34,000 --> 00:08:37,000 Đây là tương đương với một malloc. Chúng tôi không có để nói malloc nữa. 164 00:08:37,000 --> 00:08:42,000 Chúng tôi bỏ m, làm cho nó alloc, và thay thế c. Với m. 165 00:08:42,000 --> 00:08:47,000 Sau khi một cái gì đó alloc chúng tôi, sau đó chúng tôi cần phải khởi tạo nó. 166 00:08:47,000 --> 00:08:49,000 Về cơ bản khi bạn tạo các đối tượng, bạn có thể muốn có một số logic 167 00:08:49,000 --> 00:08:53,000 thực hiện khi họ đang tạo ra, vì vậy bạn có thể vượt qua trong một số giá trị mặc định 168 00:08:53,000 --> 00:08:57,000 hoặc một cái gì đó như thế, và do đó, phương pháp này init là những gì thực sự tạo ra các đối tượng. 169 00:08:57,000 --> 00:08:59,000 Đầu tiên chúng ta phân bổ không gian, giống như chúng ta đã làm trong C, 170 00:08:59,000 --> 00:09:04,000 và sau đó chúng ta khởi tạo nó, mà có thể hoặc không thể làm một toàn bộ rất nhiều. 171 00:09:04,000 --> 00:09:07,000 Sau đó, chúng tôi đang trở về điều này vào một o đối tượng. 172 00:09:07,000 --> 00:09:09,000 Có một ngôi sao ở đây vì đây là kỹ thuật một con trỏ, 173 00:09:09,000 --> 00:09:12,000 nhưng đừng lo lắng, con trỏ không phải là lớn một thỏa thuận trong C-Mục tiêu nữa. 174 00:09:12,000 --> 00:09:15,000 >> Bây giờ chúng ta đã khởi tạo lớp này được gọi là NSObject, 175 00:09:15,000 --> 00:09:19,000 và điều này chỉ là một lớp ngẫu nhiên mà Apple đã có. 176 00:09:19,000 --> 00:09:22,000 Chúng tôi đã khởi tạo này, và bây giờ tôi có một thể hiện của lớp này 177 00:09:22,000 --> 00:09:25,000 trong này o đối tượng, do đó, điều đó có nghĩa rằng nếu tôi định nghĩa 178 00:09:25,000 --> 00:09:29,000 những phương pháp này, tôi có thể gọi chúng như thế này. 179 00:09:29,000 --> 00:09:31,000 Tương tự như vậy, nếu tôi muốn gọi một phương thức với một đối số, 180 00:09:31,000 --> 00:09:34,000 vì vậy đây là phương pháp thanh, mà phải mất một đối số, 181 00:09:34,000 --> 00:09:38,000 và đây là baz: qux phương pháp, do đó, điều này có 2 đối số. 182 00:09:38,000 --> 00:09:44,000 Điều này đang kêu gọi một chức năng trên này o đối tượng. 183 00:09:44,000 --> 00:09:46,000 Có ý nghĩa? 184 00:09:46,000 --> 00:09:50,000 Cú pháp nên có ý nghĩa, nhưng bạn loại đã quen với nó. 185 00:09:50,000 --> 00:09:54,000 >> Được rồi, chúng ta hãy nói về một vài điều mà được xây dựng vào Objective-C 186 00:09:54,000 --> 00:09:56,000 không nhất thiết phải được xây dựng vào C. 187 00:09:56,000 --> 00:09:59,000 Trong C, chúng tôi loại đã phải đối phó với chuỗi như là những mảng ký tự ngu ngốc, 188 00:09:59,000 --> 00:10:01,000 và nó đã thực sự gây phiền nhiễu. 189 00:10:01,000 --> 00:10:04,000 Objective-C có tất cả được xây dựng trong cho chúng ta, và nó được xây dựng trong 190 00:10:04,000 --> 00:10:06,000 bằng cách sử dụng lớp này được gọi là NSString. 191 00:10:06,000 --> 00:10:10,000 Khi tôi muốn tạo ra một NSString chúng tôi có cú pháp phức tạp hơn. 192 00:10:10,000 --> 00:10:15,000 Thay vì nói "CS50" chúng ta nói @ "CS50" 193 00:10:15,000 --> 00:10:17,000 và đây chỉ là cú pháp để khai báo chuỗi trong C-Mục tiêu. 194 00:10:17,000 --> 00:10:21,000 Điều này là vô cùng dễ dàng để quên, do đó, không. 195 00:10:21,000 --> 00:10:24,000 Bây giờ, khi tôi đã có điều này, đây là một chuỗi, nhưng thông báo 196 00:10:24,000 --> 00:10:26,000 nó thực sự chỉ là một đối tượng. 197 00:10:26,000 --> 00:10:30,000 Tôi nói NSString, có nghĩa là tôi instantiated các lớp học 198 00:10:30,000 --> 00:10:32,000 được gọi là NSString, mà người khác đã viết cho tôi, 199 00:10:32,000 --> 00:10:35,000 và họ rất tốt đẹp về nó, và vì vậy bây giờ 200 00:10:35,000 --> 00:10:37,000 Tôi có thể bắt đầu cuộc gọi phương pháp trên đó. 201 00:10:37,000 --> 00:10:40,000 Nếu tôi gọi là chiều dài phương pháp này đối tượng 202 00:10:40,000 --> 00:10:43,000 nó sẽ trở về với tôi chiều dài của chuỗi. 203 00:10:43,000 --> 00:10:45,000 Đây là giống như strlen trong C. 204 00:10:45,000 --> 00:10:47,000 Điều này sẽ trở lại 4. 205 00:10:47,000 --> 00:10:51,000 >> Tương tự như vậy, một phương pháp khác tôi có thể muốn quan tâm là characterAtIndex này. 206 00:10:51,000 --> 00:10:54,000 Đây là một phương pháp nói trên chuỗi s 207 00:10:54,000 --> 00:10:57,000 Tôi muốn bạn để có được các ký tự 0, 208 00:10:57,000 --> 00:10:59,000 và do đó, điều này sẽ trở lại cho tôi những ký tự c, 209 00:10:59,000 --> 00:11:02,000 và có một bó toàn bộ số các cách thức mà bạn có thể Google thực sự dễ dàng. 210 00:11:02,000 --> 00:11:07,000 Tài liệu của Apple là rất tốt, và chúng tôi sẽ xem xét trong một chút. 211 00:11:07,000 --> 00:11:09,000 Đó là những chuỗi. 212 00:11:09,000 --> 00:11:11,000 Chúng tôi cũng đã mảng kích thước biến được xây dựng. 213 00:11:11,000 --> 00:11:13,000 Ghi trong C khi ta khai báo một mảng 214 00:11:13,000 --> 00:11:16,000 chúng tôi phải nói rằng bạn có 5 yếu tố, kết thúc của câu chuyện. 215 00:11:16,000 --> 00:11:18,000 Khi chúng tôi đến JavaScript và PHP chúng ta có thể bắt đầu 216 00:11:18,000 --> 00:11:20,000 làm những việc như bổ sung thêm các yếu tố hoặc di chuyển các yếu tố. 217 00:11:20,000 --> 00:11:22,000 Chúng ta có thể làm như vậy trong C-Mục tiêu. 218 00:11:22,000 --> 00:11:26,000 Thay vì tạo ra một mảng trong cách C bình thường 219 00:11:26,000 --> 00:11:30,000 chúng tôi có một lớp được gọi là NSMutableArray. 220 00:11:30,000 --> 00:11:33,000 Ngoài ra còn có NSArray, 221 00:11:33,000 --> 00:11:35,000 và điều này về cơ bản đóng gói một số mảng. 222 00:11:35,000 --> 00:11:38,000 Điều này nói rằng điều đầu tiên tôi muốn làm là tôi muốn phân bổ 223 00:11:38,000 --> 00:11:41,000 không gian cho một mảng mới, và sau khi tôi phân bổ nó 224 00:11:41,000 --> 00:11:43,000 Sau đó tôi cần phải khởi tạo nó. 225 00:11:43,000 --> 00:11:45,000 Một lần nữa, chỉ cần gọi điện thoại 2 phương pháp này. 226 00:11:45,000 --> 00:11:48,000 Bây giờ điều này có nghĩa là bên trong của đối tượng này 227 00:11:48,000 --> 00:11:50,000 Tôi có một mảng sản phẩm nào ngồi ở đó. 228 00:11:50,000 --> 00:11:54,000 Nếu tôi muốn thêm một cái gì đó vào mảng này, tôi có thể gọi phương pháp addObject. 229 00:11:54,000 --> 00:11:59,000 Tôi muốn thêm một đối tượng vào một mảng, và tôi muốn thêm vào chuỗi CS50. 230 00:11:59,000 --> 00:12:02,000 Nếu tôi muốn ngược lại loại bỏ mà tôi có thể nói tôi muốn 231 00:12:02,000 --> 00:12:09,000 loại bỏ các đối tượng ở nơi đầu tiên trên mảng hoặc phản đối một. 232 00:12:09,000 --> 00:12:11,000 >> Có ý nghĩa? 233 00:12:11,000 --> 00:12:14,000 Được rồi, bạn loại được sử dụng để điều này khung hình vuông. 234 00:12:14,000 --> 00:12:18,000 Bằng cách này, bên trong rất nhiều các thư viện của Apple, bạn sẽ thấy NS này. 235 00:12:18,000 --> 00:12:21,000 NS thực sự đại diện cho bước tiếp theo, đó là một trong những công ty đầu tiên Steve Jobs, 236 00:12:21,000 --> 00:12:24,000 và đó là nơi ông thực sự bắt đầu viết rất nhiều mã 237 00:12:24,000 --> 00:12:27,000 như là loại cơ sở cho hệ điều hành Mac OS X và tất cả các công cụ khác, 238 00:12:27,000 --> 00:12:32,000 và do đó, NS này là loại di sản này tốt đẹp hét ra một trong những công ty trước đó 239 00:12:32,000 --> 00:12:34,000 trở lại khi Apple lần đầu tiên được bắt đầu. 240 00:12:34,000 --> 00:12:36,000 Đó là ở khắp mọi nơi. 241 00:12:36,000 --> 00:12:41,000 Chúng ta hãy xem xét một ví dụ toàn diện Objective-C. 242 00:12:41,000 --> 00:12:44,000 Ở đây tôi bên trong XCode. 243 00:12:44,000 --> 00:12:47,000 Để có được ở đây, lần đầu tiên tôi tải về XCode từ App Store, 244 00:12:47,000 --> 00:12:50,000 mở nó lên, và sau đó tôi đã đi lên đây để tập tin, 245 00:12:50,000 --> 00:12:54,000 trên đây để dự án mới, và sau đó. 246 00:12:54,000 --> 00:12:57,000 Sau khi tôi làm điều đó tôi có tất cả những tùy chọn của những gì tôi muốn tạo ra, 247 00:12:57,000 --> 00:12:59,000 và vì vậy chúng tôi sẽ xem xét các tùy chọn sau, 248 00:12:59,000 --> 00:13:03,000 nhưng chỉ cho ví dụ này, bởi vì chúng ta không thực sự sẽ có một ứng dụng, 249 00:13:03,000 --> 00:13:06,000 Tôi đến đây, và tôi nói công cụ dòng lệnh, 250 00:13:06,000 --> 00:13:09,000 và điều này là một ứng dụng mà tôi có thể chạy tại dòng lệnh 251 00:13:09,000 --> 00:13:12,000 giống như chúng ta đã chạy từ C. 252 00:13:12,000 --> 00:13:16,000 Đó là cách tôi tạo ra dự án này, và vì vậy bây giờ tôi đang ở đây, 253 00:13:16,000 --> 00:13:20,000 do đó, chúng ta hãy nhìn đầu tiên về tập tin này, và điều này nên trông khá quen thuộc. 254 00:13:20,000 --> 00:13:24,000 Tôi có một tên int. Có argc bạn của tôi, bạn thân khác của tôi argv. 255 00:13:24,000 --> 00:13:30,000 Và vì vậy chúng ta có thể thấy rằng điều này là điểm vào cho ứng dụng Objective-C đầu tiên của tôi. 256 00:13:30,000 --> 00:13:32,000 Ở đây chúng ta có thể bỏ qua điều này cho bây giờ. 257 00:13:32,000 --> 00:13:35,000 Điều này về cơ bản là một số quản lý bộ nhớ thứ mà bạn sẽ không thực sự 258 00:13:35,000 --> 00:13:37,000 bao giờ phải lo lắng về. 259 00:13:37,000 --> 00:13:39,000 >> Chúng ta hãy nhìn vào khối này đầu tiên ở đây. 260 00:13:39,000 --> 00:13:46,000 Dòng đầu tiên này, nếu tôi nói sinh viên * alice = [[Sinh viên alloc] init] những gì mà làm? 261 00:13:46,000 --> 00:13:50,000 Học sinh đầu tiên này ở đây, điều này có lẽ là một lớp học. 262 00:13:50,000 --> 00:13:54,000 Đây không phải là một lớp học mà Apple đã viết, nhưng đó là một lớp học mà tôi đã viết. 263 00:13:54,000 --> 00:13:57,000 Điều đầu tiên tôi muốn làm là tôi muốn phân bổ không gian cho một sinh viên mới, 264 00:13:57,000 --> 00:14:00,000 và sau đó tôi muốn khởi tạo nó, do đó, điều này mang lại cho tôi trở lại 265 00:14:00,000 --> 00:14:05,000 đối tượng này học sinh mới, và tôi đang lưu trữ trong một biến gọi là Alice. 266 00:14:05,000 --> 00:14:07,000 Đâu là lớp học đến từ đâu? 267 00:14:07,000 --> 00:14:12,000 Vâng, ở đây ở phía bên trái đó là tất cả các tập tin khác nhau bên trong dự án của tôi. 268 00:14:12,000 --> 00:14:16,000 Chúng ta có thể thấy ở đây tôi có một Student.h và Student.m một. 269 00:14:16,000 --> 00:14:20,000 H tập tin, hãy nhớ, là nơi tôi tuyên bố tất cả những điều 270 00:14:20,000 --> 00:14:22,000 sẽ tồn tại trong lớp. 271 00:14:22,000 --> 00:14:25,000 >> Chúng ta hãy nhìn vào lúc đó. 272 00:14:25,000 --> 00:14:29,000 Được rồi, ở đây chúng tôi có giao diện này @, và điều này nói rằng ở đây có 273 00:14:29,000 --> 00:14:33,000 tờ khai của tất cả mọi thứ sẽ tồn tại trong lớp học của tôi. 274 00:14:33,000 --> 00:14:36,000 Sau đó, tôi có một dấu hai chấm. Sau đó, tôi có điều này NSObject. 275 00:14:36,000 --> 00:14:40,000 Dấu hai chấm này có nghĩa rằng bit thừa kế chúng tôi đang thảo luận về một chút trước đó. 276 00:14:40,000 --> 00:14:43,000 Này nói rằng tất cả mọi thứ một NSObject có thể làm 277 00:14:43,000 --> 00:14:46,000 nơi NSObject là lớp này được viết bởi một người khác, 278 00:14:46,000 --> 00:14:50,000 tất cả mọi thứ NSObject này có thể làm tôi muốn để có thể để làm điều đó. 279 00:14:50,000 --> 00:14:54,000 Bằng cách nói: NSObject đó có nghĩa là tôi về cơ bản 280 00:14:54,000 --> 00:14:58,000 thừa hưởng tất cả các chức năng của lớp khác. 281 00:14:58,000 --> 00:15:02,000 Điều đó thực sự đã cho tôi một bó toàn bộ các phương pháp khác nhau và tài sản mà tôi có thể sử dụng. 282 00:15:02,000 --> 00:15:05,000 Xuống đây tôi là tạo ra 2 thuộc tính. 283 00:15:05,000 --> 00:15:08,000 Điều đó có nghĩa là học sinh của tôi, nếu điều này là một cấu trúc, những sẽ là 2 điều 284 00:15:08,000 --> 00:15:11,000 bên trong cấu trúc của tôi, do đó, mỗi học sinh có một tên 285 00:15:11,000 --> 00:15:14,000 đó là một chuỗi, và học sinh cũng có một lớp, 286 00:15:14,000 --> 00:15:17,000 mà là một int. 287 00:15:17,000 --> 00:15:23,000 >> Cuối cùng, xuống đây tôi sẽ tạo ra một phương pháp cho học sinh của tôi. 288 00:15:23,000 --> 00:15:26,000 Tôi được gọi là phương pháp của tôi, initWithName, và phải mất một đối số, 289 00:15:26,000 --> 00:15:31,000 và tranh luận đó là một chuỗi, và tôi gọi nó là tên. 290 00:15:31,000 --> 00:15:35,000 Bây giờ chúng ta hãy xem làm thế nào chúng ta thực sự thực hiện lớp này. 291 00:15:35,000 --> 00:15:38,000 Ở đây, bây giờ tôi là bên trong của tập tin m. Của tôi, 292 00:15:38,000 --> 00:15:40,000 m để thực hiện, tôi đoán. 293 00:15:40,000 --> 00:15:44,000 Tôi đã thực hiện, kết thúc của tôi, và đây là nơi mà tôi thực sự xác định 294 00:15:44,000 --> 00:15:47,000 những gì initWithName. 295 00:15:47,000 --> 00:15:50,000 Tôi có initWithName, tên của các tham số của tôi, và sau đó điều này 296 00:15:50,000 --> 00:15:53,000 là nơi tôi đang thực sự tạo ra một sinh viên, 297 00:15:53,000 --> 00:15:56,000 và vì vậy đây là một chút khó hiểu, nhưng điều này là loại boilerplate 298 00:15:56,000 --> 00:15:58,000 mà bạn muốn bao gồm trong xây dựng của bạn. 299 00:15:58,000 --> 00:16:02,000 Chức năng này khởi tạo ở đây, initWithName, là một loại nhà xây dựng. 300 00:16:02,000 --> 00:16:05,000 Về cơ bản bạn đang xây dựng một đối tượng sinh viên mới 301 00:16:05,000 --> 00:16:07,000 và có thể gửi một số dữ liệu bên trong của nó. 302 00:16:07,000 --> 00:16:11,000 Điều đầu tiên tôi muốn làm là tôi muốn gọi init về điều này siêu. 303 00:16:11,000 --> 00:16:15,000 >> Nhớ rằng khi tôi nói trở lại đây trong file h. 304 00:16:15,000 --> 00:16:21,000 rằng mọi thứ NSObject một có một học sinh cũng có. 305 00:16:21,000 --> 00:16:24,000 Điều đó có nghĩa là khi tôi tạo một học sinh những gì tôi cũng cần phải làm là 306 00:16:24,000 --> 00:16:28,000 đảm bảo rằng các NSObject mà tôi đang kế thừa tất cả các dữ liệu đó từ 307 00:16:28,000 --> 00:16:32,000 cũng được khởi tạo đúng cách. 308 00:16:32,000 --> 00:16:36,000 Những gì tôi cần phải nói là siêu này thực sự sẽ để tham khảo các tầng lớp phụ huynh 309 00:16:36,000 --> 00:16:39,000 mà tôi kế thừa từ, vì vậy tôi muốn chắc chắn rằng tôi khởi tạo 310 00:16:39,000 --> 00:16:43,000 tất cả mọi thứ mà tôi đang phụ thuộc vào trước khi tôi bắt đầu cố gắng để sử dụng nó. 311 00:16:43,000 --> 00:16:46,000 Sau đó, nếu đó là khởi tạo một cách chính xác điều này chỉ là giống như nói rằng nếu malloc 312 00:16:46,000 --> 00:16:50,000 không trả lại null sau đó tôi có thể bắt đầu thiết lập một số thuộc tính. 313 00:16:50,000 --> 00:16:54,000 >> Trong JavaScript và PHP chúng tôi đã từ khóa này gọi như thế này 314 00:16:54,000 --> 00:16:58,000 và điều này thể hiện hiện tại của một lớp. 315 00:16:58,000 --> 00:17:00,000 Trong C-Mục tiêu chúng ta gọi là tự này. 316 00:17:00,000 --> 00:17:04,000 Khi tôi nói self.name, điều đó có nghĩa là các đối tượng 317 00:17:04,000 --> 00:17:07,000 Tôi chỉ cần tạo ra khi tôi nói sinh viên alloc init, 318 00:17:07,000 --> 00:17:09,000 đó là sẽ đưa cho tôi một đối tượng. 319 00:17:09,000 --> 00:17:12,000 Điều đó có nghĩa là tôi muốn để thiết lập tên của đối tượng đó 320 00:17:12,000 --> 00:17:15,000 bất cứ điều gì tôi chỉ thông qua nhập 321 00:17:15,000 --> 00:17:18,000 Cũng giống như trong C, chúng tôi truy cập các thành viên với dấu chấm này, 322 00:17:18,000 --> 00:17:21,000 để self.name cho biết tên của các đối tượng sinh viên 323 00:17:21,000 --> 00:17:24,000 sẽ là bất cứ điều gì bạn chỉ cần thông qua nhập 324 00:17:24,000 --> 00:17:28,000 Và nên cuối cùng, tôi có thể quay trở lại nó vì vậy tôi thực sự có được trở lại một cái gì đó. 325 00:17:28,000 --> 00:17:30,000 >> Câu hỏi? 326 00:17:30,000 --> 00:17:34,000 Được rồi, do đó, điều này tự = siêu init, 327 00:17:34,000 --> 00:17:37,000 nếu bạn không hoàn toàn hiểu được những thứ thừa kế đừng lo lắng. 328 00:17:37,000 --> 00:17:40,000 Chỉ biết rằng nếu bạn đã bao giờ muốn làm cho phương pháp riêng của init của bạn 329 00:17:40,000 --> 00:17:42,000 làm điều đó, và bạn sẽ được tốt để đi. 330 00:17:42,000 --> 00:17:44,000 Vâng >> [Sinh viên]. Không có nghĩa là tự nếu? 331 00:17:44,000 --> 00:17:49,000 Điều này có nghĩa là khi chúng ta malloc một cái gì đó chúng tôi luôn luôn kiểm tra nếu nó bằng vô giá trị, 332 00:17:49,000 --> 00:17:51,000 và nếu nó là null, sau đó chúng tôi đã thoát. 333 00:17:51,000 --> 00:17:55,000 Đây là điều tương tự, bởi vì nếu điều này vô giá trị trả về, sau đó chúng ta có thể sẽ lỗi seg 334 00:17:55,000 --> 00:17:57,000 nếu chúng ta bắt đầu cố gắng để thao tác nó. 335 00:17:57,000 --> 00:18:01,000 Đó là sinh viên lớp học của chúng tôi. 336 00:18:01,000 --> 00:18:03,000 Điều đó có nghĩa là chúng ta có thể khởi tạo các sinh viên của chúng tôi tại một trong hai cách. 337 00:18:03,000 --> 00:18:08,000 Nếu tôi nói sinh viên alloc init Tôi không sử dụng rằng phương pháp mà tôi chỉ viết, 338 00:18:08,000 --> 00:18:11,000 và thay vào đó tôi chỉ đơn giản là có thể nói alice.name, 339 00:18:11,000 --> 00:18:14,000 và bây giờ tôi sẽ đặt tên tài sản đó. 340 00:18:14,000 --> 00:18:17,000 >> Tương tự như vậy, nếu tôi muốn sử dụng phương pháp initWithName 341 00:18:17,000 --> 00:18:20,000 Tôi chỉ có thể nói alloc, và sau đó thay vì nói init 342 00:18:20,000 --> 00:18:24,000 Tôi sẽ gọi đó là phương pháp mà tôi vừa tạo ra, và tôi sẽ phải vượt qua trong Bob. 343 00:18:24,000 --> 00:18:30,000 Tại thời điểm này, điều này Bob đối tượng có một tên bằng Bob. 344 00:18:30,000 --> 00:18:35,000 Được rồi, xuống đây tôi đang sử dụng mà NSMutableArray mà chúng tôi xem xét trước đó. 345 00:18:35,000 --> 00:18:38,000 Tôi đang phân bổ space.Then tôi khởi tạo một mảng mới. 346 00:18:38,000 --> 00:18:40,000 Tôi sẽ thêm 2 điều cần nó. 347 00:18:40,000 --> 00:18:43,000 Mảng này hiện đang nắm giữ các đối tượng sinh viên. 348 00:18:43,000 --> 00:18:46,000 Chú ý rằng không nơi nào tôi có thể nói đây là một mảng của các học sinh. 349 00:18:46,000 --> 00:18:48,000 Tôi nói nó là một mảng, thời gian. 350 00:18:48,000 --> 00:18:50,000 Sau đó, tôi có thể đặt bất cứ điều gì bên trong của nó mà tôi muốn. 351 00:18:50,000 --> 00:18:52,000 Ở đây tôi có 2 đối tượng. 352 00:18:52,000 --> 00:18:56,000 >> Cuối cùng, tôi có một đối tượng ở đây, TF này. 353 00:18:56,000 --> 00:18:59,000 Trên đây trong TF.h về cơ bản là giống nhau. 354 00:18:59,000 --> 00:19:01,000 Tôi đang kế thừa từ NSObject, và bằng cách này, 355 00:19:01,000 --> 00:19:03,000 khi bạn tạo ra các lớp học này là tất cả được thực hiện cho bạn, 356 00:19:03,000 --> 00:19:06,000 loại của boilerplate giao diện. 357 00:19:06,000 --> 00:19:08,000 Nó có một tài sản của học sinh. 358 00:19:08,000 --> 00:19:15,000 Tôi có một vài phương pháp mà không thực sự làm một toàn bộ rất nhiều, 359 00:19:15,000 --> 00:19:18,000 và như vậy có nghĩa là sau khi tôi tạo ra đối tượng này TF 360 00:19:18,000 --> 00:19:23,000 Tôi có thể gọi đây là lớp phương pháp trên nó như thế này. 361 00:19:23,000 --> 00:19:26,000 Bất kỳ câu hỏi về cú pháp Objective-C trước khi chúng tôi bắt đầu di chuyển vào một số chi tiết 362 00:19:26,000 --> 00:19:30,000 các công cụ phát triển ứng dụng thú vị? 363 00:19:30,000 --> 00:19:34,000 >> Được rồi, vậy chúng ta hãy thực sự làm cho một ứng dụng iPhone. 364 00:19:34,000 --> 00:19:39,000 Các lớp học cốt lõi mà bạn sẽ được sử dụng bên trong ứng dụng iPhone của bạn được gọi là bộ điều khiển xem, 365 00:19:39,000 --> 00:19:42,000 và một bộ điều khiển xem về cơ bản đại diện cho một màn hình duy nhất 366 00:19:42,000 --> 00:19:46,000 bên trong ứng dụng của bạn, vì vậy nếu tôi trên các ứng dụng âm nhạc, ví dụ, 367 00:19:46,000 --> 00:19:50,000 được xem một bộ điều khiển có thể đại diện cho quan điểm mà tôi xem tất cả các bài hát trên iPhone của tôi. 368 00:19:50,000 --> 00:19:53,000 Một bộ điều khiển xem có thể là khi tôi nhấp vào một bài hát và bắt đầu chơi nó 369 00:19:53,000 --> 00:19:55,000 hoặc như tôi đang đi sâu vào các nghệ sĩ. 370 00:19:55,000 --> 00:19:59,000 Mỗi phòng trong những màn hình khác nhau có thể được biểu diễn như một bộ điều khiển xem khác nhau, 371 00:19:59,000 --> 00:20:04,000 và một bộ điều khiển xem là thực sự chỉ là một lớp nói rằng màn hình này hoạt động như thế nào. 372 00:20:04,000 --> 00:20:07,000 Những thứ bên trong của một bộ điều khiển xem, chúng ta sẽ có các thuộc tính, 373 00:20:07,000 --> 00:20:10,000 do đó, những thứ như một nút là có được một tài sản của bộ điều khiển điểm của chúng tôi. 374 00:20:10,000 --> 00:20:13,000 >> Chúng tôi cũng sẽ có phương pháp, và đây là những xử lý sự kiện cơ bản. 375 00:20:13,000 --> 00:20:16,000 Phương pháp này nói, khi bạn nhấn nút này 376 00:20:16,000 --> 00:20:19,000 Tôi muốn làm một cái gì đó, và cuối cùng, một lần nữa, 377 00:20:19,000 --> 00:20:24,000 chúng ta sẽ được sử dụng từ khoá này tự để truy cập thể hiện hiện tại. 378 00:20:24,000 --> 00:20:29,000 Xây dựng giao diện trong iOS thực sự là thực sự, thực sự dễ dàng. 379 00:20:29,000 --> 00:20:32,000 Họ có tốt đẹp này kéo và thả giao diện được gọi là giao diện Builder, 380 00:20:32,000 --> 00:20:37,000 và 2 lõi khái niệm mà dây lên C-Mục tiêu của bạn để giao diện Builder 381 00:20:37,000 --> 00:20:40,000 là IBOutlet và IBAction. 382 00:20:40,000 --> 00:20:44,000 IBOutlet tôi chỉ đơn giản nói rằng nếu bạn khai báo một tài sản đó là một nút, 383 00:20:44,000 --> 00:20:47,000 và bạn muốn móc nó lên đến một cái gì đó trong giao diện người dùng thực tế của bạn, 384 00:20:47,000 --> 00:20:49,000 bạn sẽ nói đó là một lối thoát. 385 00:20:49,000 --> 00:20:51,000 Tương tự như vậy, nếu bạn muốn để đại diện cho một xử lý sự kiện 386 00:20:51,000 --> 00:20:54,000 sau đó bạn sẽ nói đó là một hành động. 387 00:20:54,000 --> 00:20:57,000 >> Để thực sự dây này đại diện đồ họa 388 00:20:57,000 --> 00:21:00,000 và mã của bạn nó thực sự, thực sự đơn giản. 389 00:21:00,000 --> 00:21:03,000 Nếu bạn muốn đính kèm một IBOutlet, tất cả những gì bạn phải làm là bạn kiểm soát nhấp chuột, 390 00:21:03,000 --> 00:21:05,000 và chúng ta sẽ thấy một ví dụ về điều này thực sự nhanh chóng. 391 00:21:05,000 --> 00:21:07,000 Bạn kiểm soát nhấp vào nơi nó nói View Controller. 392 00:21:07,000 --> 00:21:09,000 Bạn sẽ để kéo vào giao diện, hoặc ngược lại, 393 00:21:09,000 --> 00:21:13,000 nếu bạn muốn để treo lên một xử lý sự kiện bạn sẽ kéo từ giao diện 394 00:21:13,000 --> 00:21:15,000 theo một hướng khác. 395 00:21:15,000 --> 00:21:20,000 Chúng ta hãy xem xét một ví dụ iOS thực sự đơn giản. 396 00:21:20,000 --> 00:21:23,000 >> Hãy tạo ra một dự án mới. 397 00:21:23,000 --> 00:21:25,000 Tôi sẽ đi lên đây để ứng dụng, 398 00:21:25,000 --> 00:21:28,000 và tôi sẽ bấm vào ứng dụng View Single. 399 00:21:28,000 --> 00:21:31,000 Tôi sẽ bấm vào kế tiếp. Tôi sẽ cung cấp cho dự án của tôi một cái tên. 400 00:21:31,000 --> 00:21:33,000 Tôi sẽ gọi nó là Hello. 401 00:21:33,000 --> 00:21:36,000 Thật thú vị, Apple giả định bạn đang tạo ra một sản phẩm 402 00:21:36,000 --> 00:21:38,000 để bạn có thể bán nó và họ có thể kiếm tiền. 403 00:21:38,000 --> 00:21:41,000 Xuống ở đây tôi sẽ nói rằng đây là một ứng dụng iPhone. 404 00:21:41,000 --> 00:21:44,000 Bạn có thể tạo một ứng dụng iPad, hoặc nếu bạn muốn tạo ra một trong những ứng dụng 405 00:21:44,000 --> 00:21:47,000 hỗ trợ cả hai thiết bị mà bạn có thể làm điều đó quá. 406 00:21:47,000 --> 00:21:49,000 Đây là những gì bạn muốn đánh dấu của bạn trông như. 407 00:21:49,000 --> 00:21:51,000 >> Bạn muốn sử dụng storyboards, mà chúng ta sẽ thấy sau này, 408 00:21:51,000 --> 00:21:54,000 và bạn chắc chắn muốn sử dụng tự động tính tham khảo, 409 00:21:54,000 --> 00:21:58,000 đó là một tính năng tốt đẹp mà ngăn bạn phải nói malloc và miễn phí. 410 00:21:58,000 --> 00:22:03,000 Trừ khi bạn muốn gọi malloc và miễn phí, tôi sẽ để lại kiểm tra này. 411 00:22:03,000 --> 00:22:07,000 Tôi sẽ bấm vào kế tiếp, và cuối cùng, điều này sẽ hỏi tôi, nơi tôi muốn lưu nó. 412 00:22:07,000 --> 00:22:14,000 Tôi nhấn sẽ tạo ra, và ở đây chúng tôi đi. 413 00:22:14,000 --> 00:22:16,000 Tôi tạo ra một dự án mới. 414 00:22:16,000 --> 00:22:19,000 Trên đây ở bên trái là tất cả các tập tin bên trong dự án của tôi, 415 00:22:19,000 --> 00:22:22,000 và nhận thấy rằng tôi có một bó toàn bộ, và tôi thậm chí còn không làm bất cứ điều gì. 416 00:22:22,000 --> 00:22:24,000 IOS là rất tốt. 417 00:22:24,000 --> 00:22:27,000 >> Ví dụ, đây này ViewController.h, 418 00:22:27,000 --> 00:22:30,000 điều này sẽ đại diện cho bộ điều khiển xem đầu tiên của tôi, 419 00:22:30,000 --> 00:22:32,000 vì vậy màn hình đầu tiên bên trong ứng dụng của tôi. 420 00:22:32,000 --> 00:22:34,000 Bây giờ chúng ta biết những gì đang nói. 421 00:22:34,000 --> 00:22:36,000 Chúng tôi đang nói tôi kêu gọi này ViewController lớp, 422 00:22:36,000 --> 00:22:40,000 và một ViewController làm mọi thứ mà UIViewController làm, 423 00:22:40,000 --> 00:22:43,000 và điều này, một lần nữa, một số lớp của Apple đã viết rằng hiện rất nhiều các công cụ tiện dụng cho chúng tôi 424 00:22:43,000 --> 00:22:46,000 như hiển thị màn hình. 425 00:22:46,000 --> 00:22:50,000 Đây là nơi tôi thực sự có thể bắt đầu xác định những gì điều khiển xem của tôi không, 426 00:22:50,000 --> 00:22:52,000 và nó quay ra rằng tôi thực sự không cần bất cứ điều này. 427 00:22:52,000 --> 00:22:55,000 Đây là boilerplate mã mà Apple mang lại cho tôi miễn phí. 428 00:22:55,000 --> 00:22:59,000 Tôi đã cần phải có dòng đầu tiên, hoặc tôi không có một lớp học, 429 00:22:59,000 --> 00:23:02,000 vì vậy chúng tôi có thể nhận được thoát khỏi đó và thoát khỏi điều này. 430 00:23:02,000 --> 00:23:05,000 Được rồi, vì vậy đây là màn hình trống rỗng. 431 00:23:05,000 --> 00:23:08,000 >> Bây giờ hãy click vào MainStoryboard.storyboard này, 432 00:23:08,000 --> 00:23:11,000 và đây là nơi nó bắt đầu trở nên thú vị. 433 00:23:11,000 --> 00:23:14,000 Điều này thể hiện màn hình đầu tiên trên ứng dụng của tôi. 434 00:23:14,000 --> 00:23:17,000 Nếu tôi muốn thêm một nút, trong HTML tôi đã phải tạo ra một thẻ nút. 435 00:23:17,000 --> 00:23:20,000 Trong Android, bạn có để tạo ra một thẻ nút, 436 00:23:20,000 --> 00:23:23,000 nhưng trong iOS nếu tôi chỉ đi xuống đây để góc dưới bên phải 437 00:23:23,000 --> 00:23:27,000 và nếu tôi nhấp vào này thứ 3 ở đây, nơi nó nói Đối tượng, 438 00:23:27,000 --> 00:23:31,000 và tôi có thể di chuyển xuống, hoặc tôi có thể bắt đầu tìm kiếm cho nút. 439 00:23:31,000 --> 00:23:35,000 Và nhìn, một nút, vì vậy nếu tôi thực sự kéo và thả quyền này, 440 00:23:35,000 --> 00:23:38,000 Tôi đã chỉ cần thêm vào một nút này trên màn hình ứng dụng của tôi. 441 00:23:38,000 --> 00:23:41,000 Nếu tôi muốn thay đổi các văn bản, tôi có thể nhấn đôi, 442 00:23:41,000 --> 00:23:47,000 nói điều gì đó hấp dẫn như "Bấm nhớ." 443 00:23:47,000 --> 00:23:51,000 Được rồi, bây giờ nếu tôi chạy ứng dụng này, vì vậy chúng tôi biên dịch nó, 444 00:23:51,000 --> 00:23:54,000 để chạy nó tôi nhấn vào nút play ở bên trái phía trên cùng, và có ứng dụng của tôi. 445 00:23:54,000 --> 00:23:58,000 Tôi đã không làm bất cứ điều gì, và tôi có một ứng dụng iPhone tìm kiếm ngọt ngào. 446 00:23:58,000 --> 00:24:01,000 Nếu tôi muốn để ngăn chặn nó, bạn có thể nhấp vào nút dừng 447 00:24:01,000 --> 00:24:03,000 bởi vì nó thú vị hơn. 448 00:24:03,000 --> 00:24:07,000 >> Hãy nói rằng tôi thực sự muốn một cái gì đó xảy ra khi tôi bấm nút này. 449 00:24:07,000 --> 00:24:09,000 Để làm điều đó những gì tôi cần phải làm là tôi cần phải tạo 450 00:24:09,000 --> 00:24:13,000 xử lý sự kiện mới hoặc một hành động. 451 00:24:13,000 --> 00:24:16,000 Điều đó có nghĩa rằng tôi cần phải tạo ra một số phương pháp mà tôi muốn được gọi là 452 00:24:16,000 --> 00:24:18,000 khi tôi bấm nút, vì vậy chúng ta hãy tạo ra một phương pháp mới. 453 00:24:18,000 --> 00:24:20,000 Tôi bên trong ViewController.h. 454 00:24:20,000 --> 00:24:22,000 Tôi cần phải nói rằng một phương thức tồn tại. 455 00:24:22,000 --> 00:24:26,000 Tôi cần một dấu gạch nối đầu tiên bởi vì tôi sẽ được gọi trên bộ điều khiển xem. 456 00:24:26,000 --> 00:24:28,000 Tôi cần phải cung cấp một loại. 457 00:24:28,000 --> 00:24:31,000 Các loại này là có được điều đó IBAction mà chúng ta đã thấy trước đó. 458 00:24:31,000 --> 00:24:35,000 Đây là một xử lý sự kiện, do đó, nó sẽ trở lại một IBAction, 459 00:24:35,000 --> 00:24:38,000 và điều này là một gợi ý để XCode để nói rằng 460 00:24:38,000 --> 00:24:40,000 đây là một cái gì đó tôi muốn để dây một cái gì đó để. 461 00:24:40,000 --> 00:24:45,000 Tôi có thể cung cấp cho nó một cái tên, như dấu chấm phẩy, buttonPressed. 462 00:24:45,000 --> 00:24:48,000 >> Bây giờ tôi đã tuyên bố một phương pháp mới trong lớp học của tôi. 463 00:24:48,000 --> 00:24:50,000 Tôi đã cho biết phương pháp này có tồn tại. 464 00:24:50,000 --> 00:24:53,000 Bây giờ chúng ta hãy đi vào ViewController.m, 465 00:24:53,000 --> 00:24:56,000 và hãy nói rằng phương pháp này có thể làm được. 466 00:24:56,000 --> 00:25:03,000 Nếu tôi bắt đầu đánh máy, ví dụ, (void) buttonPressed 467 00:25:03,000 --> 00:25:06,000 thông báo XCode là thực sự tốt đẹp và autocompletes cho tôi. 468 00:25:06,000 --> 00:25:09,000 Đó là thực sự tuyệt vời. 469 00:25:09,000 --> 00:25:12,000 Chú ý ở đây là bên trong các tập tin. M tôi cũng có thể nói khoảng trống, 470 00:25:12,000 --> 00:25:15,000 và điều này là bởi vì IBAction đó không phải là thực sự là một loại. 471 00:25:15,000 --> 00:25:19,000 Nó thực sự hashtag xác định một nơi nào đó để có một khoảng trống, 472 00:25:19,000 --> 00:25:22,000 và một lần nữa, đây chỉ là một gợi ý để XCode nói rằng 473 00:25:22,000 --> 00:25:25,000 Tôi muốn này là một xử lý sự kiện, và chúng ta sẽ thấy lý do tại sao chỉ trong một giây. 474 00:25:25,000 --> 00:25:28,000 Khi nút này được nhấn, tôi sẽ làm điều gì đó gây phiền nhiễu 475 00:25:28,000 --> 00:25:30,000 như hiển thị một popup. 476 00:25:30,000 --> 00:25:35,000 >> Để làm điều đó tôi có thể tạo ra một thể hiện mới của lớp này được gọi là UIAlertView, 477 00:25:35,000 --> 00:25:39,000 và đây là một lớp học mà Apple đã viết đó sẽ hiển thị các quảng cáo gây phiền nhiễu. 478 00:25:39,000 --> 00:25:43,000 Chúng tôi sẽ gọi cảnh báo này bật lên, và tôi có 2 bước, hãy nhớ, để tạo ra đối tượng này. 479 00:25:43,000 --> 00:25:46,000 Điều đầu tiên tôi cần làm là phân bổ không gian. 480 00:25:46,000 --> 00:25:48,000 Tôi muốn có một UIAlertView. 481 00:25:48,000 --> 00:25:51,000 Tôi muốn phân bổ không gian. Đó là phương pháp đầu tiên của tôi. 482 00:25:51,000 --> 00:25:53,000 Phương pháp tiếp theo của tôi là tôi muốn khởi tạo nó, 483 00:25:53,000 --> 00:25:58,000 và vì vậy tôi có phương pháp này, lớn dài được gọi là initWithTitle. 484 00:25:58,000 --> 00:26:01,000 Đó là cơ bản để kiểm soát những gì bật lên này nói. 485 00:26:01,000 --> 00:26:04,000 Tiêu đề của sổ bật lên của tôi có thể được. 486 00:26:04,000 --> 00:26:08,000 Thông điệp của popup này có thể được "Đây là iOS." 487 00:26:08,000 --> 00:26:10,000 Đại biểu điều, tôi không biết đó là gì. 488 00:26:10,000 --> 00:26:13,000 Hãy nói rằng nó không có gì. 489 00:26:13,000 --> 00:26:18,000 Bây giờ các nút sẽ xuất hiện có thể nói một cái gì đó giống như "Đó chắc chắn là," 490 00:26:18,000 --> 00:26:24,000 và tôi không thực sự muốn bất cứ nút nào khác, vì vậy hãy xóa và đóng khung. 491 00:26:24,000 --> 00:26:27,000 >> Được rồi, tôi tạo ra một một trong những phụ. Hiện chúng tôi đi. 492 00:26:27,000 --> 00:26:30,000 Điều này là làm thế nào tôi có thể tạo một popup mới. 493 00:26:30,000 --> 00:26:35,000 Nếu tôi muốn thực sự hiển thị các popup tôi muốn gọi phương pháp hiển thị. 494 00:26:35,000 --> 00:26:38,000 Để làm điều đó tôi có thể nói cảnh báo và hiển thị, 495 00:26:38,000 --> 00:26:40,000 và một lần nữa, tự động hoàn chỉnh là siêu đẹp. 496 00:26:40,000 --> 00:26:42,000 Nếu tôi quên điều đó, nếu tôi chỉ cần gõ vào s, 497 00:26:42,000 --> 00:26:45,000 Tôi có thể di chuyển qua đây để tìm ra nó là cái gì, 498 00:26:45,000 --> 00:26:48,000 và nó sẽ lọc độc đáo. 499 00:26:48,000 --> 00:26:52,000 Bây giờ tôi tạo ra popup này mới. 500 00:26:52,000 --> 00:26:55,000 Chúng tôi sẽ quay trở lại đại biểu có nghĩa là gì sau đó, 501 00:26:55,000 --> 00:26:58,000 và bây giờ tôi muốn nói rằng tôi muốn phương pháp này được bắn 502 00:26:58,000 --> 00:27:01,000 khi tôi bấm nút, do đó, tôi sẽ trở lại kịch bản của tôi, 503 00:27:01,000 --> 00:27:04,000 và bây giờ tôi muốn đính kèm này IBAction. 504 00:27:04,000 --> 00:27:06,000 Điều đầu tiên bạn muốn làm là nhấn nút. 505 00:27:06,000 --> 00:27:08,000 Khi tôi bấm nút này, tôi muốn một cái gì đó xảy ra. 506 00:27:08,000 --> 00:27:10,000 Tôi sẽ không giữ kiểm soát. 507 00:27:10,000 --> 00:27:13,000 Tôi sẽ để click và kéo từ nút 508 00:27:13,000 --> 00:27:15,000 hơn ở đây, nơi nó nói View Controller. 509 00:27:15,000 --> 00:27:17,000 Chúng ta có thể thấy rằng nó độc đáo sáng lên. 510 00:27:17,000 --> 00:27:22,000 >> Nếu tôi để đi với con chuột của tôi tôi bây giờ có popup này ở đây, nơi tôi có một số tùy chọn. 511 00:27:22,000 --> 00:27:24,000 Một trong số đó là sự kiện mà tôi có thể đăng ký. 512 00:27:24,000 --> 00:27:28,000 Đây là tất cả các phương pháp đó, tôi tuyên bố trong tập tin h của tôi như IBActions. 513 00:27:28,000 --> 00:27:31,000 Điều này là làm thế nào XCode biết những gì sẽ xuất hiện trong danh sách nhỏ này, 514 00:27:31,000 --> 00:27:33,000 vì vậy đó là một gợi ý. 515 00:27:33,000 --> 00:27:37,000 Nếu tôi bấm vào nút bấm, bây giờ tôi đã đăng ký xử lý sự kiện. 516 00:27:37,000 --> 00:27:41,000 Trong JavaScript, chúng tôi phải nói rằng tôi có một số mã đăng ký xử lý sự kiện. 517 00:27:41,000 --> 00:27:43,000 Trong C-Mục tiêu đó là thực sự dễ dàng. 518 00:27:43,000 --> 00:27:46,000 Nếu tôi chạy này một lần nữa 519 00:27:46,000 --> 00:27:49,000 bây giờ khi tôi bấm nút xử lý sự kiện của tôi là sẽ sa thải, 520 00:27:49,000 --> 00:27:51,000 và tôi sẽ nhận được popup này. 521 00:27:51,000 --> 00:27:54,000 Siêu, siêu đơn giản. 522 00:27:54,000 --> 00:27:57,000 >> Nếu bạn đã bao giờ muốn nhìn thấy tất cả những sự kiện đó xảy ra để được đăng ký 523 00:27:57,000 --> 00:28:00,000 trên một thành phần nếu tôi nhấp vào nút này 524 00:28:00,000 --> 00:28:02,000 và tôi đến đây để các bên phải 525 00:28:02,000 --> 00:28:05,000 đầu tiên bạn có thể thấy ở đây tôi có thể làm những thứ như các loại của các nút, 526 00:28:05,000 --> 00:28:08,000 vì vậy nếu bạn muốn một trong những người của tôi hoặc liên hệ vào nút thêm 527 00:28:08,000 --> 00:28:10,000 hoặc bất cứ điều gì. 528 00:28:10,000 --> 00:28:13,000 Nếu tôi muốn xem tất cả các sự kiện vào nút này 529 00:28:13,000 --> 00:28:16,000 nếu tôi đến tất cả các cách trên đây để các bên phải 530 00:28:16,000 --> 00:28:19,000 chúng ta có thể thấy ở đây tại các sự kiện tôi có tất cả các sự kiện khác nhau. 531 00:28:19,000 --> 00:28:23,000 Tôi có thể nhấn nút, khi tôi cho đi của nút, khi tôi tăng gấp đôi vòi nước hoặc bất cứ điều gì, 532 00:28:23,000 --> 00:28:26,000 và tôi vừa đăng ký là sự kiện này được gọi là cảm ứng Up Bên trong, 533 00:28:26,000 --> 00:28:29,000 và điều này nói rằng ngay sau khi ngón tay của tôi đến nút 534 00:28:29,000 --> 00:28:32,000 sự kiện đang xảy ra cháy, và đó là chính xác những gì vừa xảy ra. 535 00:28:32,000 --> 00:28:36,000 Đây là loại sự kiện mặc định ấn nút. 536 00:28:36,000 --> 00:28:39,000 >> Bất kỳ câu hỏi nào cho đến nay? 537 00:28:39,000 --> 00:28:43,000 Được rồi, đó là làm thế nào chúng ta có thể bắt đầu để dây lên những điều trong mã của chúng tôi 538 00:28:43,000 --> 00:28:46,000 vào những thứ bên trong giao diện của chúng tôi. 539 00:28:46,000 --> 00:28:49,000 Hãy nhớ điều đầu tiên chúng tôi phải làm là để tìm mã, 540 00:28:49,000 --> 00:28:54,000 và sau đó chúng tôi có dây lên giao diện cho mã, 541 00:28:54,000 --> 00:28:57,000 và ứng dụng đầu tiên của chúng tôi. 542 00:28:57,000 --> 00:29:00,000 Được rồi, đó là thực sự mát mẻ, và chúng tôi tạo ra nút này. 543 00:29:00,000 --> 00:29:03,000 Điều gì sẽ xảy ra nếu chúng ta không muốn có để tạo ra một loạt các tài sản 544 00:29:03,000 --> 00:29:05,000 đại diện cho các nút này? 545 00:29:05,000 --> 00:29:08,000 Ví dụ, trong Tic Tac Toe tôi có 9 nút, 546 00:29:08,000 --> 00:29:11,000 và nó muốn được siêu, siêu khó chịu khi phải kéo và thả 9 lần 547 00:29:11,000 --> 00:29:14,000 hoặc nếu tôi đã có để làm cho Tic Tac Toe với 81 thay vì 9 548 00:29:14,000 --> 00:29:17,000 và tôi đã phải kéo và thả 81 lần, và đó là lame. 549 00:29:17,000 --> 00:29:20,000 Những gì chúng ta có thể làm gì để thay là giống như một HTML 550 00:29:20,000 --> 00:29:23,000 khi chúng tôi đã có những thứ như ID và tên người và chúng ta có thể tìm kiếm mọi thứ 551 00:29:23,000 --> 00:29:27,000 ID của họ, có một khái niệm tương tự như trong iOS được gọi là thẻ. 552 00:29:27,000 --> 00:29:31,000 >> Tag đơn giản chỉ là một định danh số duy nhất cho một thành phần. 553 00:29:31,000 --> 00:29:34,000 Nếu tôi nói điều này có một thẻ từ 0, ví dụ, 554 00:29:34,000 --> 00:29:38,000 nếu tôi tạo ra một nút và cung cấp cho nó một thẻ từ 0, và chúng tôi sẽ xem làm thế nào để làm điều đó chỉ trong một giây, 555 00:29:38,000 --> 00:29:41,000 nếu tôi muốn nhận được rằng nút, tôi chỉ đơn giản là có thể nói rằng tôi muốn gọi 556 00:29:41,000 --> 00:29:45,000 , viewWithTag phương pháp trên đối tượng trên đây 557 00:29:45,000 --> 00:29:48,000 self.view, đại diện cho màn hình hiện tại, ví dụ. 558 00:29:48,000 --> 00:29:53,000 Nếu tôi gọi rằng phương pháp viewWithTag, tôi sẽ kéo lại các nút có tag 0. 559 00:29:53,000 --> 00:29:58,000 Chúng ta hãy xem xét điều này bằng cách xây dựng Tic Tac Toe. 560 00:29:58,000 --> 00:30:01,000 Thứ nhất, đây là kịch bản của tôi. 561 00:30:01,000 --> 00:30:05,000 Tôi đã tạo ra 10 nút giao diện người dùng này. 562 00:30:05,000 --> 00:30:07,000 Chú ý tất cả chúng có cùng kích thước. 563 00:30:07,000 --> 00:30:11,000 Nếu tôi nhấp vào một trong những điều này và tôi trở lại đây ở phía bên này phải 564 00:30:11,000 --> 00:30:15,000 bạn sẽ thấy, tôi chỉnh lại font chữ ở đây, nên tôi thực hiện các phông chữ lớn hơn một chút, 565 00:30:15,000 --> 00:30:19,000 nhưng những gì Tôi cũng đã làm tôi đặt thẻ này. 566 00:30:19,000 --> 00:30:23,000 Tôi nói điều này có một tag của 1, và đó là phía trên bên trái. 567 00:30:23,000 --> 00:30:26,000 >> Bây giờ, nếu tôi bấm một nút khác, như thế này thứ hai ở đây, 568 00:30:26,000 --> 00:30:29,000 bây giờ bạn sẽ thấy rằng từ khóa của tôi là 2. 569 00:30:29,000 --> 00:30:32,000 Mỗi phòng trong các nút này chỉ có một thẻ duy nhất, 570 00:30:32,000 --> 00:30:35,000 và do đó, điều này sau đó như thế nào tôi sẽ bắt đầu tương tác 571 00:30:35,000 --> 00:30:38,000 với ứng dụng của tôi. 572 00:30:38,000 --> 00:30:40,000 Đây là tất cả các bên trong của một bộ điều khiển xem, 573 00:30:40,000 --> 00:30:42,000 nhưng đây là những gì chúng tôi có. 574 00:30:42,000 --> 00:30:44,000 Chúng tôi có 3 thuộc tính ở đây. 575 00:30:44,000 --> 00:30:49,000 Người đầu tiên và mới nhất sẽ đại diện cho nhà nước của hội đồng quản trị của tôi. 576 00:30:49,000 --> 00:30:53,000 Về cơ bản này đầu tiên là một mảng đại diện cho nơi Xs và Os. 577 00:30:53,000 --> 00:30:57,000 Một trong những khác ở đây cho chúng ta biết có lần lượt là. 578 00:30:57,000 --> 00:31:01,000 Bạn sẽ nhận thấy rằng tôi cũng có những việc này ở đây. 579 00:31:01,000 --> 00:31:05,000 Trước khi chúng tôi tuyên bố tài sản, chúng tôi đã cho họ một cái tên và một loại. 580 00:31:05,000 --> 00:31:08,000 Chúng tôi cũng có thể cung cấp cho họ một số thông tin bổ sung ở đây. 581 00:31:08,000 --> 00:31:11,000 Đầu tiên này nói nonatomic, và những gì này nói 582 00:31:11,000 --> 00:31:16,000 về cơ bản là chỉ có một điều sẽ không bao giờ phải cố gắng để truy cập vào biến tại một thời điểm. 583 00:31:16,000 --> 00:31:19,000 Bạn có thể làm phức tạp hơn các ứng dụng đa luồng, 584 00:31:19,000 --> 00:31:22,000 và như vậy trở lại trong Scratch chúng tôi đã có các chủ đề khác nhau, 585 00:31:22,000 --> 00:31:25,000 và sprites khác nhau có thể làm những việc khác nhau cùng một lúc. 586 00:31:25,000 --> 00:31:29,000 >> Nếu đó không phải là trường hợp, nó không phải là bất cứ điều gì mà chúng ta sẽ được xem xét, 587 00:31:29,000 --> 00:31:33,000 nếu chúng ta nói nonatomic nó thực sự sẽ làm cho mọi việc nhanh hơn một chút. 588 00:31:33,000 --> 00:31:37,000 Chúng tôi cũng có điều này được gọi là phân công, mạnh mẽ, hay yếu. 589 00:31:37,000 --> 00:31:40,000 Này gán chỉ nói rằng đây là một loại tiêu chuẩn. 590 00:31:40,000 --> 00:31:43,000 Đây không phải là một đối tượng hoặc một con trỏ vì đây chỉ là một bool, 591 00:31:43,000 --> 00:31:46,000 để bool được xây dựng vào C-Mục tiêu. 592 00:31:46,000 --> 00:31:49,000 Điều này nói rằng không cố gắng làm bất cứ điều gì ưa thích với con trỏ ở đây. 593 00:31:49,000 --> 00:31:51,000 Đó là một tuổi thường xuyên scaler. 594 00:31:51,000 --> 00:31:54,000 Mạnh và yếu, yếu đuối này cho biết, thực sự 595 00:31:54,000 --> 00:31:57,000 Tôi muốn điều này để được trỏ đến một cái gì đó trong bộ điều khiển xem. 596 00:31:57,000 --> 00:32:00,000 Tôi sẽ không thực sự phân bổ hoặc init này bản thân mình. 597 00:32:00,000 --> 00:32:04,000 Các nhà xây dựng giao diện, khi tôi chạy các ứng dụng, sẽ xử lý tất cả những gì khởi tạo. 598 00:32:04,000 --> 00:32:07,000 Nếu tôi nói yếu, nói rằng một người nào khác sẽ được tạo ra. 599 00:32:07,000 --> 00:32:09,000 Nếu tôi nói mạnh mẽ, điều này nói rằng tôi sẽ là một trong những 600 00:32:09,000 --> 00:32:12,000 đó là tạo ra các đối tượng này hội đồng quản trị, 601 00:32:12,000 --> 00:32:14,000 và do đó, ở đây tôi có phương pháp một số chi tiết ở đây, 602 00:32:14,000 --> 00:32:18,000 ví dụ, một hành động khi được nhấn nút trò chơi mới, 603 00:32:18,000 --> 00:32:20,000 một hành động cho khi bất kỳ của các nút khác được ép, 604 00:32:20,000 --> 00:32:23,000 và vân vân. 605 00:32:23,000 --> 00:32:26,000 >> Chúng tôi sẽ không nhận ra quá nhiều của logic của Tic Tac Toe, 606 00:32:26,000 --> 00:32:30,000 mặc dù nó rất thú vị, nhưng chúng ta hãy xem xét 607 00:32:30,000 --> 00:32:33,000 một số trong những điều mà chúng ta có thể làm bên trong của iOS. 608 00:32:33,000 --> 00:32:35,000 Phương pháp này trò chơi mới sẽ được bắn 609 00:32:35,000 --> 00:32:37,000 bất cứ khi nào tôi bấm nút trò chơi mới. 610 00:32:37,000 --> 00:32:41,000 Để treo lên, tôi chỉ đơn giản là đi qua kịch bản của tôi. 611 00:32:41,000 --> 00:32:43,000 Tôi nhấp vào trò chơi mới. 612 00:32:43,000 --> 00:32:47,000 Nếu tôi đi qua bên phải, tôi có thể thấy rằng 613 00:32:47,000 --> 00:32:50,000 Chạm Bên trong là dây để phương pháp newGame. 614 00:32:50,000 --> 00:32:53,000 Đó là lý do tại sao điều này sẽ bị sa thải. 615 00:32:53,000 --> 00:32:56,000 Phương pháp newGame được để làm một số thiết lập. 616 00:32:56,000 --> 00:32:59,000 Nó sẽ nói rằng tôi muốn bạn để xóa trạng thái của hội đồng quản trị. 617 00:32:59,000 --> 00:33:01,000 Đây là một phương pháp tốt đẹp trên có thể thay đổi mảng. 618 00:33:01,000 --> 00:33:03,000 Điều này sẽ nói đó là X lượt, 619 00:33:03,000 --> 00:33:07,000 và bây giờ tôi sẽ tận dụng lợi thế của điều này viewWithTag. 620 00:33:07,000 --> 00:33:11,000 >> Tôi biết rằng các nút của tôi có các thẻ 1-9, 621 00:33:11,000 --> 00:33:13,000 và đó là một cái gì đó tôi tự ý chọn. 622 00:33:13,000 --> 00:33:15,000 Nếu tôi muốn thiết lập các văn bản của mỗi nút được sản phẩm nào 623 00:33:15,000 --> 00:33:17,000 bởi vì tôi chỉ mới bắt đầu một trò chơi mới và tôi không muốn bất kỳ 624 00:33:17,000 --> 00:33:20,000 Xs hoặc O để lại trên tôi có thể làm điều này. 625 00:33:20,000 --> 00:33:24,000 Tôi có thể nói rằng tôi muốn xem có tag, 1, 2, 3, 4 vân vân. 626 00:33:24,000 --> 00:33:27,000 Điều này sẽ kéo một nút bấm khác nhau mỗi lần. 627 00:33:27,000 --> 00:33:30,000 Ở đây tôi sẽ bỏ nó vào UIButton. 628 00:33:30,000 --> 00:33:33,000 Cũng giống như chúng ta có thể bỏ ints để nổi và ngược lại 629 00:33:33,000 --> 00:33:37,000 điều này nói rằng tôi muốn cast này một UIButton. 630 00:33:37,000 --> 00:33:40,000 Điều đó có nghĩa là các loại này sẽ là một * UIButton 631 00:33:40,000 --> 00:33:43,000 vì các con trỏ, nhưng đừng lo lắng, họ không đáng sợ nữa. 632 00:33:43,000 --> 00:33:47,000 >> Khi tôi đã có nút này tôi sẽ gọi một phương thức trên nó. 633 00:33:47,000 --> 00:33:50,000 Phương pháp này được gọi là setTitle forState, và do đó, điều này nói 634 00:33:50,000 --> 00:33:53,000 Tôi muốn thiết lập các văn bản của các nút là chuỗi rỗng, 635 00:33:53,000 --> 00:33:57,000 và tôi muốn nó là chuỗi rỗng khi nó không ép. 636 00:33:57,000 --> 00:34:01,000 Nếu tôi đang sử dụng phương pháp này, tôi có thể thay đổi các văn bản của các nút 637 00:34:01,000 --> 00:34:04,000 ngay khi có ai đánh nó, nhưng chúng tôi muốn nói khi nút được chỉ ngồi đó 638 00:34:04,000 --> 00:34:07,000 Tôi muốn văn bản được để trống. 639 00:34:07,000 --> 00:34:10,000 Cuối cùng, chúng ta sẽ khởi tạo hội đồng quản trị của tôi, 640 00:34:10,000 --> 00:34:12,000 và tôi sẽ nói rằng tất cả mọi thứ hiện đang ở mức 0, 641 00:34:12,000 --> 00:34:15,000 do đó, điều này các thành viên hội đồng quản trị không thay đổi là một mảng có thể thay đổi, 642 00:34:15,000 --> 00:34:21,000 có nghĩa là tôi có thể gọi phương thức addObject và chỉ bên trong một 0 của nó. 643 00:34:21,000 --> 00:34:23,000 Đó là những gì xảy ra khi tôi tạo ra một trò chơi mới. 644 00:34:23,000 --> 00:34:25,000 >> Chúng ta hãy xem xét một số khác. 645 00:34:25,000 --> 00:34:28,000 Phương pháp này ở đây là IBAction đó sẽ được ép 646 00:34:28,000 --> 00:34:31,000 mỗi lần một trong những hình vuông được nhấn. 647 00:34:31,000 --> 00:34:33,000 Bây giờ chúng tôi có một số Tic Tac Toe logic ở đây. 648 00:34:33,000 --> 00:34:36,000 Chúng tôi tìm ra có lần lượt là, 649 00:34:36,000 --> 00:34:39,000 và dựa trên đó chúng tôi thiết lập một X hoặc một O, 650 00:34:39,000 --> 00:34:43,000 nhưng chúng tôi nhận thấy rằng chúng tôi đang sử dụng lại cùng một xử lý sự kiện 651 00:34:43,000 --> 00:34:45,000 cho mỗi một đơn của các nút. 652 00:34:45,000 --> 00:34:49,000 Điều đó có nghĩa là tôi không có một phương pháp cho các nút trên bên trái, 653 00:34:49,000 --> 00:34:52,000 một phương pháp khác nhau cho nút phía dưới bên phải, mặc dù tôi có thể có thực hiện điều đó. 654 00:34:52,000 --> 00:34:54,000 Điều đó sẽ không thực sự được thiết kế tốt. 655 00:34:54,000 --> 00:34:57,000 Những gì tôi đang làm ở đây là tôi thực sự sẽ để xác định 656 00:34:57,000 --> 00:35:00,000 thẻ của nút được nhấn. 657 00:35:00,000 --> 00:35:04,000 Bạn nhận thấy rằng phương pháp này chơi mất một đối số. 658 00:35:04,000 --> 00:35:07,000 Nó được gọi là người gửi, người gửi là người gửi sẽ 659 00:35:07,000 --> 00:35:10,000 đại diện cho chính xác những gì được hành động trên. 660 00:35:10,000 --> 00:35:15,000 Nếu tôi nhấn một nút, người gửi sẽ được rằng UIButton 661 00:35:15,000 --> 00:35:18,000 rằng tôi thực sự ép, do đó có nghĩa rằng UIButton 662 00:35:18,000 --> 00:35:20,000 có một thẻ bởi vì tôi đã tạo ra một thẻ. 663 00:35:20,000 --> 00:35:23,000 >> Nếu tôi muốn để có được thẻ, tôi chỉ đơn giản là có thể nói 664 00:35:23,000 --> 00:35:26,000 Tôi muốn các thẻ của người gửi, 665 00:35:26,000 --> 00:35:28,000 và một lần nữa, tôi vừa mới đúc nó vào một UIButton. 666 00:35:28,000 --> 00:35:32,000 Tôi xảy ra để biết rằng người gửi sẽ là một UIButton. 667 00:35:32,000 --> 00:35:34,000 Nó không phải luôn luôn là một UIButton. 668 00:35:34,000 --> 00:35:36,000 Tôi có thể, ví dụ, đăng ký cùng một xử lý sự kiện 669 00:35:36,000 --> 00:35:38,000  cho một cho một nút, một cho một thanh trượt. 670 00:35:38,000 --> 00:35:40,000 Trong trường hợp này, tôi biết họ đang tất cả các nút, do đó, tôi sẽ nói 671 00:35:40,000 --> 00:35:43,000 Tôi muốn này là một nút, và sau đó tôi có thể nhận được thẻ, 672 00:35:43,000 --> 00:35:48,000 và từ thẻ bây giờ tôi biết nơi tôi bên trong của hội đồng quản trị. 673 00:35:48,000 --> 00:35:51,000 Sau đó, tôi chỉ đơn giản là có thể thiết lập hoặc X hoặc O, có thể lật lần lượt, 674 00:35:51,000 --> 00:35:54,000 kiểm tra xem những người đã giành được, vân vân. 675 00:35:54,000 --> 00:35:59,000 >> Bất kỳ câu hỏi này cho đến nay? 676 00:35:59,000 --> 00:36:02,000 Được rồi, tất cả các mã chúng tôi được đăng trực tuyến chúng tôi không muốn để có được vào quá nhiều 677 00:36:02,000 --> 00:36:06,000 của logic Tic Tac Toe, nhưng bây giờ bạn có thể thấy rằng thực sự 678 00:36:06,000 --> 00:36:09,000 tất cả những gì chúng ta đang làm là chúng ta đang Looping trên mảng này, 679 00:36:09,000 --> 00:36:13,000 vì vậy chúng tôi có một vài cho vòng ở đây, và chúng tôi chỉ so sánh để xem 680 00:36:13,000 --> 00:36:18,000 chúng tôi có một trận đấu trong tất cả các hàng, một trận đấu trong một cột hoặc bất cứ điều gì như thế. 681 00:36:18,000 --> 00:36:21,000 Để thực sự chạy ứng dụng này, nếu tôi gõ vào một trong những nút 682 00:36:21,000 --> 00:36:24,000 rằng phương pháp chơi đã bị sa thải, do đó, điều đó có nghĩa là tôi chỉ cần đặt 683 00:36:24,000 --> 00:36:31,000 nút là một X, vì vậy bây giờ nút này sẽ là một O, và như vậy, 684 00:36:31,000 --> 00:36:35,000 và vì vậy đó là làm thế nào chúng ta đang bắt đầu tương tác với các ứng dụng trang duy nhất. 685 00:36:35,000 --> 00:36:38,000 >> Chúng tôi sẽ gửi mã, vì vậy cảm thấy tự do để lướt qua rằng, 686 00:36:38,000 --> 00:36:43,000 nhưng Bây giờ chúng ta hãy nói về một số ứng dụng mà có nhiều hơn so với chỉ một trang. 687 00:36:43,000 --> 00:36:47,000 Như là thú vị như Tic Tac Toe là, rất nhiều ứng dụng bên trong của iOS 688 00:36:47,000 --> 00:36:50,000 là loại khoan này ra những điều có nhiều màn hình. 689 00:36:50,000 --> 00:36:54,000 Khái niệm đầu tiên mà chúng ta sẽ cần phải nói về các giao thức, 690 00:36:54,000 --> 00:36:57,000 và một giao thức chỉ đơn giản là một tập hợp các phương pháp 691 00:36:57,000 --> 00:36:59,000 mà bạn có thể hứa hẹn để xác định. 692 00:36:59,000 --> 00:37:02,000 Nếu tôi tạo ra giao thức mới này với 2 phương pháp, một trong những đầu tiên này, 693 00:37:02,000 --> 00:37:05,000 nếu kiểu trả về là void, tôi gọi nó là foo. 694 00:37:05,000 --> 00:37:07,000 Nó không có đối số. Tôi có một phương pháp khác. 695 00:37:07,000 --> 00:37:11,000 Nó trả về một int. Tôi gọi nó là thanh này, và phải mất một đối số. 696 00:37:11,000 --> 00:37:14,000 Tất cả các giao thức này là được gọi là SomeProtocol lên đây, 697 00:37:14,000 --> 00:37:19,000 đây là một tập hợp của những điều mà một người nào đó có thể thực hiện. 698 00:37:19,000 --> 00:37:22,000 Tôi đã không phải bên trong của giao thức này cho biết những gì foo. 699 00:37:22,000 --> 00:37:26,000 Thay vào đó, tôi chỉ nói rằng bạn có thể xác định foo nếu bạn muốn. 700 00:37:26,000 --> 00:37:30,000 Nếu tôi là tạo ra một bộ điều khiển xem hoặc tạo ra một lớp 701 00:37:30,000 --> 00:37:33,000 Tôi có thể bên trong của lời hứa đó lớp để thực hiện 702 00:37:33,000 --> 00:37:40,000 một số phương pháp này, do đó, ví dụ, nếu nói 703 00:37:40,000 --> 00:37:43,000 này ngay bây giờ nói rằng tôi là làm một lời hứa với bạn rằng bên trong 704 00:37:43,000 --> 00:37:50,000 của lớp này điều khiển xem, tôi sẽ phải định nghĩa cho cả hai foo và bar. 705 00:37:50,000 --> 00:37:52,000 >> Tại sao là hữu ích? 706 00:37:52,000 --> 00:37:55,000 Rất nhiều các thành phần bên trong của iOS tận dụng điều này 707 00:37:55,000 --> 00:37:58,000 mẫu thiết kế được gọi là đoàn đại biểu, và những gì phân quyền 708 00:37:58,000 --> 00:38:01,000 là, ví dụ, nếu tôi có một hộp văn bản 709 00:38:01,000 --> 00:38:04,000 và có một số sự kiện có thể được đăng ký bên trong của hộp văn bản của tôi, 710 00:38:04,000 --> 00:38:07,000 hơn là việc tạo ra các sự kiện riêng biệt những gì tôi có thể làm là tôi có thể nói 711 00:38:07,000 --> 00:38:10,000 các đại biểu của hộp văn bản này sẽ có một số đối tượng. 712 00:38:10,000 --> 00:38:13,000 Khi tôi nói rằng đây là một đại biểu tại đó có nghĩa là 713 00:38:13,000 --> 00:38:16,000 bất cứ khi nào một số sự kiện có thể đã được bắn vào hộp văn bản 714 00:38:16,000 --> 00:38:18,000 thay vì phải đăng ký hoặc bất cứ điều gì như thế 715 00:38:18,000 --> 00:38:21,000 nó chỉ là để gọi một phương thức trên các đại biểu. 716 00:38:21,000 --> 00:38:24,000 Ví dụ, bên trong hộp văn bản của tôi, tôi có một phương pháp để khi tôi bấm 717 00:38:24,000 --> 00:38:27,000 mà làm nút ở góc dưới bên phải, 718 00:38:27,000 --> 00:38:30,000 và nên thay vì đăng ký xử lý sự kiện những gì tôi có thể nói được 719 00:38:30,000 --> 00:38:34,000 hộp văn bản, đây là một đối tượng mà tôi muốn bạn gọi một phương thức trên 720 00:38:34,000 --> 00:38:37,000 mỗi khi một người nào đó nhấn nút thực hiện, 721 00:38:37,000 --> 00:38:40,000 và điều đó có nghĩa là đối tượng có để thực hiện một số giao thức 722 00:38:40,000 --> 00:38:45,000 nói rằng tôi hứa sẽ xác định rằng hành động nút thực hiện, 723 00:38:45,000 --> 00:38:47,000 bởi vì nếu nó không xác định rằng phương pháp và bạn nhấn xong, 724 00:38:47,000 --> 00:38:49,000 sau đó nó sẽ là khó hiểu. 725 00:38:49,000 --> 00:38:55,000 >> Chúng ta hãy xem một ví dụ. 726 00:38:55,000 --> 00:38:58,000 Ở đây tôi chỉ đơn giản là có một hộp văn bản, 727 00:38:58,000 --> 00:39:04,000 và một trong các thuộc tính của hộp văn bản này ở đây này phía bên phải là các đại biểu. 728 00:39:04,000 --> 00:39:06,000 Đây là một tài sản của lớp. 729 00:39:06,000 --> 00:39:09,000 Những gì tôi đã làm ở đây là để kiểm soát nhấn vào, và tôi kéo ra khỏi vị trí này ở đây 730 00:39:09,000 --> 00:39:13,000 bộ điều khiển xem, và nói rằng các đại biểu của hộp văn bản này 731 00:39:13,000 --> 00:39:18,000 là có được bộ điều khiển xem. 732 00:39:18,000 --> 00:39:20,000 Điều đó có nghĩa là khi một số hành động xảy ra, chứ không phải đăng ký 733 00:39:20,000 --> 00:39:25,000 xử lý sự kiện riêng biệt tôi muốn bạn gửi cho các đại biểu. 734 00:39:25,000 --> 00:39:28,000 Bây giờ chúng ta hãy nhìn vào bộ điều khiển điểm của tôi. 735 00:39:28,000 --> 00:39:32,000 Bên trong của tập tin h. Tôi đã thực hiện một lời hứa. 736 00:39:32,000 --> 00:39:36,000 Tôi đã hứa sẽ thực hiện một số phương pháp bên trong của giao thức này 737 00:39:36,000 --> 00:39:38,000 gọi là UITextFieldDelegate, và một lần nữa, 738 00:39:38,000 --> 00:39:42,000 đây chỉ là một số danh sách của một số thứ mà tôi có thể chọn để thực hiện. 739 00:39:42,000 --> 00:39:46,000 >> Nếu tôi đến đây vào tập tin. M của tôi, tôi đã thực hiện một trong những phương pháp như vậy. 740 00:39:46,000 --> 00:39:49,000 Tôi đã gọi nó là textFieldShouldReturn 741 00:39:49,000 --> 00:39:52,000 bởi vì đó là những gì nó được gọi là bên trong của giao thức. 742 00:39:52,000 --> 00:39:57,000 Và bây giờ bất cứ khi nào tôi bấm nút thực hiện bên trong đó lĩnh vực văn bản 743 00:39:57,000 --> 00:40:00,000 đây là những gì đang xảy ra để có được gọi, vì vậy tôi đã không đăng ký một hàm xử lý sự kiện. 744 00:40:00,000 --> 00:40:03,000 Tôi đã kết nối đại biểu, và bất cứ khi nào sự kiện này là bắn 745 00:40:03,000 --> 00:40:08,000 đây là phương pháp mà sẽ được gọi, vì vậy nếu tôi đi qua đây để kịch bản của tôi và chạy nó 746 00:40:08,000 --> 00:40:11,000 trong khi đó tải chúng ta có thể thấy điều này không. 747 00:40:11,000 --> 00:40:13,000 Trên màn hình của tôi, tôi có 2 điều. 748 00:40:13,000 --> 00:40:16,000 Tôi có lĩnh vực văn bản này, và tôi có nhãn này. 749 00:40:16,000 --> 00:40:19,000 Tôi chỉ đơn giản nói rằng tôi muốn các văn bản của nhãn này 750 00:40:19,000 --> 00:40:23,000 bằng bất cứ điều gì người dùng gõ vào bên trong trường văn bản. 751 00:40:23,000 --> 00:40:26,000 Dòng tiếp theo này ở đây chỉ đơn giản là một phương pháp mà tôi đang gọi 752 00:40:26,000 --> 00:40:29,000 trên các lĩnh vực văn bản nói rằng tôi muốn bạn để ẩn bàn phím. 753 00:40:29,000 --> 00:40:33,000 Đây chỉ là phương pháp độc đoán rằng Apple đã chọn. 754 00:40:33,000 --> 00:40:38,000 >> Một lần nữa, trước khi tôi đã làm bất cứ điều gì tôi đã để dây lên tất cả mọi thứ, do đó, lần đầu tiên tôi đến đây. 755 00:40:38,000 --> 00:40:42,000 Từ bộ điều khiển xem tôi kéo vào hộp văn bản. 756 00:40:42,000 --> 00:40:46,000 Tôi để cho đi, và tôi có thể thấy ở đây mà tôi có thể làm cho tài sản lĩnh vực văn bản 757 00:40:46,000 --> 00:40:49,000 từ trên đây ở bộ điều khiển xem, tôi đã xác định một tài sản 758 00:40:49,000 --> 00:40:52,000 đó là một IBOutlet của một trường text. 759 00:40:52,000 --> 00:40:55,000 Điều này nói rằng tôi có thể dây này tài sản 760 00:40:55,000 --> 00:40:59,000 một trường văn bản trong giao diện người dùng của tôi. 761 00:40:59,000 --> 00:41:03,000 Bây giờ khi tôi nhấp vào này tôi có thể bắt đầu nhập. 762 00:41:03,000 --> 00:41:06,000 Bây giờ nếu tôi nhấp vào nút thực hiện điều này là có lửa 763 00:41:06,000 --> 00:41:08,000 một sự kiện mà tôi bây giờ có thể đáp ứng. 764 00:41:08,000 --> 00:41:10,000 Không có sự kiện xử lý. 765 00:41:10,000 --> 00:41:13,000 Đó là cách tôi chỉ trả lời rằng nút thực hiện. 766 00:41:13,000 --> 00:41:15,000 Có ý nghĩa? 767 00:41:15,000 --> 00:41:20,000 >> Đây không phải là một mẫu thiết kế rằng bạn có thể không bao giờ tìm thấy chính mình 768 00:41:20,000 --> 00:41:23,000 tạo ra giao thức riêng của bạn, nhưng chỉ cần biết rằng một số 769 00:41:23,000 --> 00:41:27,000 các thành phần khác nhau iOS đăng ký các sự kiện theo những cách khác nhau. 770 00:41:27,000 --> 00:41:29,000 Buttons, ví dụ, sử dụng những IBActions. 771 00:41:29,000 --> 00:41:32,000 Lĩnh vực văn bản, mặt khác, sẽ sử dụng các đại biểu. 772 00:41:32,000 --> 00:41:36,000 Chúng tôi có thể xem và bạn có thể xem tất cả các rằng bên trong lên các tài liệu hướng dẫn. 773 00:41:36,000 --> 00:41:41,000 Bằng cách này, có thực sự là một tấn công cụ giao diện người dùng được xây dựng vào iOS cho bạn, 774 00:41:41,000 --> 00:41:46,000 ví dụ như vậy, cách tôi nói rằng thực hiện ở góc dưới bên 775 00:41:46,000 --> 00:41:48,000 Tôi đã chọn lĩnh vực văn bản này. 776 00:41:48,000 --> 00:41:50,000 Tôi đi qua đây. 777 00:41:50,000 --> 00:41:53,000 Tôi cuộn xuống một chút để trả lại chìa khóa, 778 00:41:53,000 --> 00:41:56,000 và tôi thực sự có thể làm cho một bó toàn bộ những thứ này, giống như nếu tôi muốn những gì để nói 779 00:41:56,000 --> 00:42:00,000 trường hợp khẩn cấp gọi thay vào đó tôi có thể làm điều đó, đó là hoàn toàn ngẫu nhiên, 780 00:42:00,000 --> 00:42:02,000 và tôi không biết lý do tại sao có một nút khẩn cấp cuộc gọi built-in, 781 00:42:02,000 --> 00:42:06,000 nhưng có, nó nói cuộc gọi khẩn cấp trong chữ thực sự nhỏ. 782 00:42:06,000 --> 00:42:08,000 Có bạn đi. 783 00:42:08,000 --> 00:42:12,000 >> Chắc chắn khám phá tất cả các tùy chọn khác nhau trong iOS. 784 00:42:12,000 --> 00:42:14,000 Bất kỳ câu hỏi các đại biểu? 785 00:42:14,000 --> 00:42:18,000 Một lần nữa, chỉ cần một mẫu thiết kế thú vị mà bạn cần phải nhận thức. 786 00:42:18,000 --> 00:42:22,000 Được rồi, chúng ta hãy tiếp theo có một cái nhìn xem bảng. 787 00:42:22,000 --> 00:42:26,000 Một xem bảng là cơ bản mà danh sách các mục đó là tất cả các nơi trên iOS. 788 00:42:26,000 --> 00:42:29,000 Khi bạn flipping thông qua tất cả các địa chỉ liên lạc của bạn, bạn đang tìm kiếm 789 00:42:29,000 --> 00:42:34,000 trang thiết lập, và các loại danh sách những thứ được gọi là xem bảng. 790 00:42:34,000 --> 00:42:37,000 Thực hiện một cái nhìn bảng trong iOS là khá đơn giản. 791 00:42:37,000 --> 00:42:41,000 Thay vì tạo ra một lớp học mà xuống từ đó UIViewController 792 00:42:41,000 --> 00:42:44,000 như chúng tôi đã thực hiện trước khi chúng tôi chỉ đơn giản là cần phải nói chứ không phải là 793 00:42:44,000 --> 00:42:46,000 tất cả mọi thứ một UIViewController không tôi muốn làm, 794 00:42:46,000 --> 00:42:50,000 Tôi nói tất cả mọi thứ một UITableViewController không tôi muốn làm, 795 00:42:50,000 --> 00:42:54,000 để chỉ đơn giản là bổ sung thêm một số điều bổ sung được hoàn toàn làm cho chúng ta. 796 00:42:54,000 --> 00:42:58,000 Chúng ta cần làm rất ít về cơ bản điền vào những khoảng trống bên trong của bảng. 797 00:42:58,000 --> 00:43:02,000 >> Để hiển thị một bảng tôi cần phải trả lời một số câu hỏi. 798 00:43:02,000 --> 00:43:06,000 Câu hỏi đầu tiên tôi cần phải trả lời là có bao nhiêu phần trong bảng? 799 00:43:06,000 --> 00:43:08,000 Khi bạn đang flipping thông qua ứng dụng các địa chỉ liên lạc của bạn, bạn sẽ nhận thấy rằng đó là loại 800 00:43:08,000 --> 00:43:12,000 Như tổ chức, sau đó bạn có Bs, và bạn đã có tiêu đề ít phụ. 801 00:43:12,000 --> 00:43:14,000 Mỗi phòng trong những người được gọi là một phần. 802 00:43:14,000 --> 00:43:16,000 Bạn có thể hoặc có thể không cần những. 803 00:43:16,000 --> 00:43:19,000 Điều đầu tiên bạn cần làm là thực hiện một phương pháp 804 00:43:19,000 --> 00:43:22,000 gọi là tableView: numberOfSectionsInTableView. 805 00:43:22,000 --> 00:43:25,000 Điều đó chỉ đơn giản trả bao nhiêu phần bạn có, 806 00:43:25,000 --> 00:43:29,000 do đó, điều này có thể nói trở lại nếu bạn có một xem bảng lớn. 807 00:43:29,000 --> 00:43:33,000 Câu hỏi tiếp theo mà iOS cần biết là bạn có bao nhiêu hàng? 808 00:43:33,000 --> 00:43:36,000 Ví dụ, bạn đang lật qua một xem bảng. 809 00:43:36,000 --> 00:43:39,000 Bạn có một số cố định của các bài hát mà bạn đang tìm kiếm hoặc một số cố định của địa chỉ liên lạc. 810 00:43:39,000 --> 00:43:41,000 Nếu bạn là tôi, tất nhiên, không phải là nhiều, 811 00:43:41,000 --> 00:43:44,000 và vì vậy đó là như thế nào iOS biết bao nhiêu tế bào để hiển thị. 812 00:43:44,000 --> 00:43:46,000 >> Một lần nữa, điều này có thể nói một cái gì đó như lợi tức 3. 813 00:43:46,000 --> 00:43:49,000 Xem bảng của tôi có 3 dòng. 814 00:43:49,000 --> 00:43:52,000 Cuối cùng, iOS cần phải biết những gì mỗi tế bào trông giống như, 815 00:43:52,000 --> 00:43:54,000 vì vậy những gì nó thực sự sẽ làm là gọi phương thức này xuống đây, 816 00:43:54,000 --> 00:43:57,000 tableView: cellForRowAtIndexPath này. 817 00:43:57,000 --> 00:44:01,000 Nó sẽ gọi phương pháp này trên tất cả các tế bào bên trong của bảng của bạn. 818 00:44:01,000 --> 00:44:03,000 Làm thế nào để biết bao nhiêu lần để gọi nó? 819 00:44:03,000 --> 00:44:06,000 Vâng, bạn nói với nó trong số các hàng trong phần. 820 00:44:06,000 --> 00:44:08,000 Chúng ta sẽ gọi đây là trên mỗi tế bào của chúng ta, 821 00:44:08,000 --> 00:44:11,000 và bên trong của việc này là bạn thực sự có thể làm những việc như 822 00:44:11,000 --> 00:44:16,000 thiết lập các văn bản hoặc cho bạn biết những gì mà ít nút màu xanh ở bên phải. 823 00:44:16,000 --> 00:44:19,000 Các mô hình cho việc các tế bào này, chúng ta sẽ sử dụng phương pháp 824 00:44:19,000 --> 00:44:22,000 gọi là dequeueReusableCellWithIdentifier. 825 00:44:22,000 --> 00:44:29,000 >> Objective-C là thực sự rất nổi tiếng với chiều dài vô lý của tên phương pháp của họ, 826 00:44:29,000 --> 00:44:32,000 và điều này thực sự là một trường hợp tốt đẹp trong ví dụ điểm. 827 00:44:32,000 --> 00:44:37,000 Phương pháp này là chỉ nói tôi muốn bạn để cho tôi một tế bào. 828 00:44:37,000 --> 00:44:39,000 Chỉ cần một điều iOS. 829 00:44:39,000 --> 00:44:41,000 Nếu bạn có một cái gì đó giống như 100.000 bài hát trên iPod của bạn 830 00:44:41,000 --> 00:44:45,000 iOS không muốn làm là phân bổ 100.000 ô, 831 00:44:45,000 --> 00:44:48,000 bởi vì nếu bạn đang ở trên cùng của danh sách của bạn, bạn thực sự cần phải cấp phát bộ nhớ 832 00:44:48,000 --> 00:44:51,000 cho các tế bào đó là 99.000 hàng xuống? 833 00:44:51,000 --> 00:44:55,000 Không, bởi vì khi bạn đang di chuyển, bạn có thể loại phân bổ như bạn đi cùng. 834 00:44:55,000 --> 00:44:57,000 Điều này được thực hiện cho bạn. 835 00:44:57,000 --> 00:44:59,000 Bạn không cần phải lo lắng về tất cả những công cụ hiệu suất ngu ngốc. 836 00:44:59,000 --> 00:45:02,000 Tất cả những gì bạn nói là bạn gọi phương pháp này dequeueReusableCellWithIdentifier, 837 00:45:02,000 --> 00:45:06,000 và điều này nói, không sao, nếu bạn cần tôi sẽ tạo ra tế bào mới cho bạn. 838 00:45:06,000 --> 00:45:09,000 >> Nhưng nếu bạn ở dưới cùng của bảng và bạn đã phân bổ một số tế bào 839 00:45:09,000 --> 00:45:12,000 ở phía trên của bảng mà bạn đang thực sự sẽ không cần phải sớm 840 00:45:12,000 --> 00:45:15,000 Tôi sẽ cung cấp cho bạn một trong những người trở lại thay vì phân bổ một mới, 841 00:45:15,000 --> 00:45:17,000 và vì vậy đây là một mối quan tâm thực hiện tốt đẹp. 842 00:45:17,000 --> 00:45:21,000 Bạn không cần phải tự mình phân bổ các tế bào. 843 00:45:21,000 --> 00:45:23,000 Điều đó sẽ cung cấp cho bạn một tế bào. 844 00:45:23,000 --> 00:45:25,000 Nó sẽ trả lại cho bạn một đối tượng di động. 845 00:45:25,000 --> 00:45:28,000 Một khi bạn có các đối tượng di động bạn có thể làm công cụ cho nó. 846 00:45:28,000 --> 00:45:32,000 Bạn có thể thiết lập các văn bản của tế bào với tài sản được gọi là văn bản nhãn. 847 00:45:32,000 --> 00:45:36,000 Bạn có thể thêm rằng mũi tên bên phải hoặc một số công cụ khác ngẫu nhiên 848 00:45:36,000 --> 00:45:41,000 với các tài sản khác được gọi là accessoryType, và vv và vv. 849 00:45:41,000 --> 00:45:46,000 >> Hãy có một cái nhìn thực sự thực hiện một xem bảng giờ. 850 00:45:46,000 --> 00:45:49,000 Khi tôi tạo ra dự án này 851 00:45:49,000 --> 00:45:53,000 thay vì nói rằng ứng dụng nhìn duy nhất tôi thực sự đi qua đây 852 00:45:53,000 --> 00:45:57,000 ứng dụng master-chi tiết, và như vậy về cơ bản này tương ứng với các ứng dụng mail 853 00:45:57,000 --> 00:46:01,000 trên iPad với chế độ xem bảng bên trái và sau đó là nội dung bên phải. 854 00:46:01,000 --> 00:46:07,000 Trên iPod hoặc iPhone này sẽ tương ứng với một xem bảng duy nhất. 855 00:46:07,000 --> 00:46:10,000 Đó là nơi tôi có mã khởi động của tôi. 856 00:46:10,000 --> 00:46:13,000 >> Trước tiên chúng ta có một cái nhìn ở kịch bản này. 857 00:46:13,000 --> 00:46:15,000 Tất cả những điều này đã được thực hiện đối với tôi, về cơ bản tạo ra. 858 00:46:15,000 --> 00:46:18,000 Thanh điều hướng này cho thấy ví dụ một tế bào có thể giống như, 859 00:46:18,000 --> 00:46:22,000 và tôi có thể tăng gấp đôi nhấp vào, thay đổi tiêu đề. 860 00:46:22,000 --> 00:46:25,000 Bất kỳ mối quan tâm giao diện người dùng khác có thể xử lý. 861 00:46:25,000 --> 00:46:27,000 Các tập tin tiêu đề trông thật sự đơn giản. 862 00:46:27,000 --> 00:46:30,000 Thay vì nói rằng đây là UIViewController Bây giờ chúng ta đang nói đây là một 863 00:46:30,000 --> 00:46:35,000 TableViewController, vì vậy chúng tôi biết rằng chúng tôi muốn kêu gọi tất cả các phương pháp bảng. 864 00:46:35,000 --> 00:46:38,000 Tiếp theo, tôi muốn tạo ra một tài sản mà sẽ đại diện cho 865 00:46:38,000 --> 00:46:40,000 những điều bên trong của bàn của tôi. 866 00:46:40,000 --> 00:46:43,000 Bảng này sẽ tự ý hiển thị 867 00:46:43,000 --> 00:46:46,000 một danh sách các trái cây, và vì vậy tôi cần phải tạo ra một số mảng 868 00:46:46,000 --> 00:46:49,000 trong đó tôi có thể chèn trái cây. 869 00:46:49,000 --> 00:46:52,000 Bên trong của tập tin thực thi của tôi, điều đầu tiên tôi muốn làm 870 00:46:52,000 --> 00:46:55,000 là tôi muốn làm cho chắc chắn tôi khởi tạo mảng này. 871 00:46:55,000 --> 00:46:58,000 >> Tôi nói alloc init, tạo ra mảng trái cây của tôi, 872 00:46:58,000 --> 00:47:03,000 và tôi thêm 4 thứ với nó, một trong số đó là rất nhiều tranh cãi hơn khác 3. 873 00:47:03,000 --> 00:47:06,000 Và bây giờ tôi có một loạt các kích thước 4. 874 00:47:06,000 --> 00:47:08,000 Chúng tôi đang lắc nó vào CS50. 875 00:47:08,000 --> 00:47:11,000 Tôi đã có một loạt các kích thước 4. 876 00:47:11,000 --> 00:47:13,000 Bây giờ tôi sẽ bắt đầu trả lời những câu hỏi này, và trên thực tế, 877 00:47:13,000 --> 00:47:16,000 khi tôi tạo ra ứng dụng này tất cả những điều này đã làm cho tôi. 878 00:47:16,000 --> 00:47:19,000 Tôi không phải loại ra số phần trong một xem bảng. 879 00:47:19,000 --> 00:47:22,000 Nó đã ở đó, và tôi điền vào chỗ trống. 880 00:47:22,000 --> 00:47:24,000 Có bao nhiêu phần nào? 881 00:47:24,000 --> 00:47:26,000 One. Tất cả đã hoàn tất. 882 00:47:26,000 --> 00:47:28,000 Bao nhiêu hàng nào? 883 00:47:28,000 --> 00:47:31,000 Vâng, tôi có một hàng cho mỗi trái cây, do đó, đếm này 884 00:47:31,000 --> 00:47:34,000 là một tài sản của bất kỳ mảng nói rằng là nó lớn như thế nào? 885 00:47:34,000 --> 00:47:36,000 Đó là tôi có bao nhiêu hàng. 886 00:47:36,000 --> 00:47:42,000 Cuối cùng, tôi cần phải nói mỗi tế bào trông giống như những gì? 887 00:47:42,000 --> 00:47:46,000 Tôi sẽ nói dequeueReusableCellWithIdentifier. 888 00:47:46,000 --> 00:47:48,000 >> Một lần nữa, điều này đã được viết cho tôi. 889 00:47:48,000 --> 00:47:51,000 Tôi không phải làm điều này bản thân mình, và tôi muốn trở lại 890 00:47:51,000 --> 00:47:54,000 tế bào này tại địa điểm này. 891 00:47:54,000 --> 00:47:57,000 Hãy nhớ rằng chúng tôi đang gọi điện thoại cùng một phương pháp này trên tất cả các tế bào duy nhất, 892 00:47:57,000 --> 00:48:01,000 và lập luận này ở đây, lập luận này indexPath, 893 00:48:01,000 --> 00:48:03,000 hàng tôi. 894 00:48:03,000 --> 00:48:05,000 Nếu tôi nói indexPath.row đây 895 00:48:05,000 --> 00:48:09,000 đây sẽ là 0, sau đó nó sẽ là 1, sau đó nó sẽ là 2, và điều này là vì vậy tôi biết 896 00:48:09,000 --> 00:48:11,000 những tế bào Tôi hiện đang hiển thị. 897 00:48:11,000 --> 00:48:15,000 Tôi muốn thiết lập các văn bản của tế bào bằng cách sử dụng khách sạn textLabel 898 00:48:15,000 --> 00:48:19,000 bên trong mảng trái cây của tôi và nhận được 899 00:48:19,000 --> 00:48:21,000 các đối tượng tương ứng với mỗi hàng. 900 00:48:21,000 --> 00:48:24,000 Nếu đây là một chuỗi, tôi bây giờ thiết lập 901 00:48:24,000 --> 00:48:28,000 tài sản văn bản thành một chuỗi. 902 00:48:28,000 --> 00:48:30,000 Tôi có thể làm một điều khác. 903 00:48:30,000 --> 00:48:32,000 Tôi cũng có thể đăng ký một hàm xử lý sự kiện trên mỗi của các tế bào, 904 00:48:32,000 --> 00:48:35,000 vì vậy khi tôi tap mỗi của các tế bào này 905 00:48:35,000 --> 00:48:39,000 didSelectRowAtIndexPath này, điều này sẽ được gọi là cho tôi, 906 00:48:39,000 --> 00:48:42,000 do đó, chỉ đơn giản bằng cách định nghĩa này, tôi bây giờ có thể xử lý những gì sẽ xảy ra 907 00:48:42,000 --> 00:48:46,000 khi bạn chạm vào một tế bào, và một lần nữa, chúng tôi đang đi qua mà tế bào bị nghe lén 908 00:48:46,000 --> 00:48:50,000 để chúng tôi có thể tái sử dụng xử lý sự kiện tương tự cho tất cả các tế bào của chúng ta. 909 00:48:50,000 --> 00:48:53,000 >> Một lần nữa, đây là một cái gì đó iOS đang làm cho tôi. 910 00:48:53,000 --> 00:48:55,000 Hãy hiển thị một popup gây phiền nhiễu khác 911 00:48:55,000 --> 00:48:59,000 mà chỉ đơn giản nói rằng bạn chọn một cái gì đó mà một điều gì đó 912 00:48:59,000 --> 00:49:04,000 là có được các đối tượng hàng. 913 00:49:04,000 --> 00:49:10,000 Khi tôi chạy, tôi sẽ phải xem bảng này tốt đẹp 914 00:49:10,000 --> 00:49:14,000 có một hàng cho mỗi trái cây này, và nếu tôi khai thác 1 915 00:49:14,000 --> 00:49:16,000 nó nói với tôi những gì đã xảy ra. 916 00:49:16,000 --> 00:49:21,000 Có ý nghĩa? 917 00:49:21,000 --> 00:49:24,000 Hãy xây dựng một chút phức tạp hơn của một ứng dụng, 918 00:49:24,000 --> 00:49:28,000 càng nhiều như cách nhấp vào bạn chọn cà chua. 919 00:49:28,000 --> 00:49:31,000 Phần tốt đẹp về viết kịch bản 920 00:49:31,000 --> 00:49:35,000 là nó không chỉ sẽ giúp màn hình thiết kế chúng tôi cá nhân, 921 00:49:35,000 --> 00:49:38,000 nó cũng sẽ giúp chúng tôi kết hợp chặt chẽ ứng dụng toàn bộ của chúng tôi, 922 00:49:38,000 --> 00:49:42,000 do đó, các ứng dụng cuối cùng chúng tôi sẽ xây dựng này là đọc tin tức thể thao đẹp, 923 00:49:42,000 --> 00:49:45,000 và do đó, nó sẽ có nhiều màn hình, và vì vậy tôi thực sự có thể đại diện cho 924 00:49:45,000 --> 00:49:48,000 mỗi màn hình này trên nhiều kịch bản này, 925 00:49:48,000 --> 00:49:52,000 và tôi có thể phóng to và thu nhỏ ứng dụng của tôi từ mức cao. 926 00:49:52,000 --> 00:49:55,000 >> Để tạo ra một phần tử bên trong mới của kịch bản của tôi 927 00:49:55,000 --> 00:49:59,000 nó thực sự đơn giản bên trong giao diện Builder. 928 00:49:59,000 --> 00:50:01,000 Nếu tôi muốn thêm một màn hình này, ví dụ, 929 00:50:01,000 --> 00:50:06,000 Lần đầu tiên tôi có thể thu nhỏ với zoom ít mà Apple yêu rất nhiều, 930 00:50:06,000 --> 00:50:09,000 và xuống đây trước khi tôi tìm kiếm một nút 931 00:50:09,000 --> 00:50:12,000 và tôi kéo và thả một nút 932 00:50:12,000 --> 00:50:15,000 nếu tôi muốn tạo ra một màn hình mới, tôi có thể thực sự chỉ cần kéo và thả 933 00:50:15,000 --> 00:50:19,000 một bộ điều khiển xem toàn bộ, vì vậy nếu tôi chọn này, kéo nó ở đây, 934 00:50:19,000 --> 00:50:23,000 hey, có một màn hình khác, và vì vậy bây giờ bằng cách sử dụng cùng một kịch bản tập tin này 935 00:50:23,000 --> 00:50:26,000 Tôi có thể có tất cả các màn hình bên trong ứng dụng của tôi, và tôi có thể thu nhỏ 936 00:50:26,000 --> 00:50:28,000 và xem cách họ tương tác. 937 00:50:28,000 --> 00:50:32,000 Đây sẽ không tương tác. 938 00:50:32,000 --> 00:50:36,000 Cách thức mà 2 màn hình này tương tác là bạn xác định các mối quan hệ. 939 00:50:36,000 --> 00:50:39,000 Về cơ bản bạn có thể nói màn hình này, khi bạn nhấn nút này, 940 00:50:39,000 --> 00:50:42,000 Tôi muốn bạn để trượt qua màn hình mới này. 941 00:50:42,000 --> 00:50:44,000 Điều đó có nghĩa là loại mối quan hệ giữa 942 00:50:44,000 --> 00:50:46,000  màn hình đầu tiên và màn hình thứ hai. 943 00:50:46,000 --> 00:50:49,000 Bạn sẽ có cơ bản một mũi tên từ nút đó để màn hình thứ hai 944 00:50:49,000 --> 00:50:53,000 nói rằng khi bạn nhấn nút này đó là nơi tôi muốn đi. 945 00:50:53,000 --> 00:50:57,000 Cũng giống như chúng ta kiểm soát nhấp vào và kéo để xác định những cửa hàng 946 00:50:57,000 --> 00:51:01,000 chúng ta sẽ làm điều tương tự để xác định những segues. 947 00:51:01,000 --> 00:51:05,000 >> Chúng ta sẽ thấy một ví dụ cho điều đó, và trước khi chúng tôi thực sự chuyển đổi 948 00:51:05,000 --> 00:51:08,000 từ một màn hình khác iOS là tốt đẹp, đủ để gọi phương pháp này 949 00:51:08,000 --> 00:51:11,000 gọi là prepareForSegue, và đây là nơi mà chúng ta có thể bắt đầu 950 00:51:11,000 --> 00:51:14,000 gửi dữ liệu từ một ứng dụng khác. 951 00:51:14,000 --> 00:51:17,000 Trong ví dụ này, chúng tôi đang về để nhìn vào nó về cơ bản sẽ cho phép chúng tôi 952 00:51:17,000 --> 00:51:20,000 để lọc các đội bóng chày của giải đấu và các bộ phận. 953 00:51:20,000 --> 00:51:23,000 Khi tôi chọn một giải đấu, ví dụ, tôi muốn chuyển 954 00:51:23,000 --> 00:51:25,000 màn hình kế tiếp của tôi, nơi tôi có thể hiển thị tất cả các bộ phận 955 00:51:25,000 --> 00:51:27,000 trong đó các giải đấu hoặc tất cả các đội khác nhau. 956 00:51:27,000 --> 00:51:31,000 Tôi cần phải gửi với màn hình những gì đội bạn nên hiển thị. 957 00:51:31,000 --> 00:51:35,000 Để làm được điều mà tôi sẽ tận dụng lợi thế của phương pháp này ở đây. 958 00:51:35,000 --> 00:51:39,000 >> Cuối cùng, chỉ cần một điểm ngẫu nhiên trên iOS. 959 00:51:39,000 --> 00:51:41,000 Nếu bạn muốn lưu trữ dữ liệu có điều này được gọi là dữ liệu cốt lõi, 960 00:51:41,000 --> 00:51:44,000 mà thực sự là loại phức tạp để làm việc với. 961 00:51:44,000 --> 00:51:47,000 Bạn cũng có thể sử dụng SQL để lưu trữ dữ liệu, 962 00:51:47,000 --> 00:51:51,000 một lần nữa, là tốt đẹp, nhưng loại ở phía bên phức tạp hơn để làm việc với, 963 00:51:51,000 --> 00:51:55,000 nhưng iOS cũng hỗ trợ những điều này thực sự mát mẻ được gọi là danh sách đặc tính, 964 00:51:55,000 --> 00:52:00,000 và một danh sách bất động sản chỉ là một tập tin mà đại diện cho các cặp giá trị quan trọng. 965 00:52:00,000 --> 00:52:03,000 Bạn định nghĩa một danh sách các phím, và bạn nói phím này là có được một mảng. 966 00:52:03,000 --> 00:52:06,000 Đây chính là một chuỗi, và về cơ bản bất cứ điều gì bạn có thể làm 967 00:52:06,000 --> 00:52:10,000 trong JSON, bạn có thể làm bên trong của một danh sách bất động sản, 968 00:52:10,000 --> 00:52:14,000 và do đó, điều này thực sự độc đáo cho phép chúng tôi làm việc với một số dữ liệu. 969 00:52:14,000 --> 00:52:18,000 Ví dụ, tôi có Teams.plist mà tôi tạo ra. 970 00:52:18,000 --> 00:52:22,000 Tôi tạo ra một tập tin plist mới, và tôi có thể đi sâu. 971 00:52:22,000 --> 00:52:26,000 Đây là một từ điển, đây là một từ điển, đây là chuỗi, 972 00:52:26,000 --> 00:52:30,000 và vì vậy đây là một đại diện đồ họa đẹp của một tài liệu JSON 973 00:52:30,000 --> 00:52:33,000 hay chỉ là một tập hợp các cặp giá trị quan trọng, 974 00:52:33,000 --> 00:52:37,000 và do đó, điều này là các dữ liệu mà chúng ta sẽ làm việc với các bên trong ứng dụng của tôi. 975 00:52:37,000 --> 00:52:40,000 >> Hãy đầu tiên đến đây. Chúng tôi có các tập tin nhiều hơn bây giờ. 976 00:52:40,000 --> 00:52:44,000 Nhưng trước tiên hãy đến đây để kịch bản này. 977 00:52:44,000 --> 00:52:48,000 Các kịch bản ở đây nếu tôi có thể thu nhỏ 978 00:52:48,000 --> 00:52:51,000 bây giờ chúng ta có thể thấy rằng đây là dòng chảy của ứng dụng của tôi. 979 00:52:51,000 --> 00:52:53,000 Tôi đầu tiên sẽ bắt đầu trên màn hình này. 980 00:52:53,000 --> 00:52:55,000 Tôi sẽ đi sâu vào màn hình này, 981 00:52:55,000 --> 00:52:58,000 và tôi sẽ đi sâu vào màn hình này, và chúng ta có thể thấy ở đây rằng nếu tôi loại 982 00:52:58,000 --> 00:53:04,000 di chuyển một trong những xung quanh chúng ta có những mũi tên đi từ đây đến đây, 983 00:53:04,000 --> 00:53:08,000 và cách tôi xác định rằng mũi tên là nếu tôi phóng to một chút, 984 00:53:08,000 --> 00:53:12,000 và nếu tôi đi qua để điều khiển xem này, 985 00:53:12,000 --> 00:53:16,000 và đây là một tế bào, và tôi muốn nói rằng khi bạn chạm vào một tế bào 986 00:53:16,000 --> 00:53:18,000 Tôi muốn bạn để trượt qua màn hình khác. 987 00:53:18,000 --> 00:53:21,000 Tôi chỉ đơn giản là có thể giữ kiểm soát, 988 00:53:21,000 --> 00:53:26,000 di chuyển trên một chút, giữ kiểm soát, kéo tế bào này và để cho đi. 989 00:53:26,000 --> 00:53:30,000 >> Và ở đây chúng ta nói quá trình chuyển đổi mà bạn muốn sử dụng là những gì? 990 00:53:30,000 --> 00:53:32,000 Bạn có muốn sử dụng điều slide có đẩy được gọi là? 991 00:53:32,000 --> 00:53:34,000 Bạn có muốn trượt từ dưới lên? 992 00:53:34,000 --> 00:53:36,000 Đó gọi là phương thức. 993 00:53:36,000 --> 00:53:40,000 Và một khi tôi nhấp vào một trong những, nó sẽ vẽ mũi tên này cho tôi, 994 00:53:40,000 --> 00:53:44,000 và điều đó có nghĩa là tôi đã thực sự xử lý những gì sẽ xảy ra khi tôi bấm nút này đồ họa. 995 00:53:44,000 --> 00:53:48,000 Tôi đã không viết bất kỳ mã để thực sự trượt từ một màn hình kế tiếp. 996 00:53:48,000 --> 00:53:51,000 Tôi xác định trực quan bên trong giao diện Builder. 997 00:53:51,000 --> 00:53:55,000 Nếu tôi bấm vào mũi tên này, chúng ta có thể thấy rằng tôi đã cho điều này một tên. 998 00:53:55,000 --> 00:53:59,000 Tôi gọi nó là showDivisions, và đây là để tôi có thể biết 999 00:53:59,000 --> 00:54:03,000 quá trình chuyển đổi là gì sắp xảy ra, và chúng ta sẽ thấy lý do tại sao chỉ trong một giây. 1000 00:54:03,000 --> 00:54:06,000 Đó là cách tôi đã có dây lên các màn hình khác nhau trong ứng dụng của tôi. 1001 00:54:06,000 --> 00:54:09,000 Nếu đây là một nút, ví dụ, thay vì xem một bảng, 1002 00:54:09,000 --> 00:54:11,000 Tôi có thể kiểm soát nhấp chuột vào nút, kéo qua màn hình tiếp theo, 1003 00:54:11,000 --> 00:54:16,000 và đó là làm thế nào tôi có thể làm chuyển hướng theo cách đó. 1004 00:54:16,000 --> 00:54:19,000 >> Thực sự nhanh chóng, nếu chúng ta đi vào các MasterViewController, 1005 00:54:19,000 --> 00:54:22,000 một lần nữa, chúng tôi chỉ đơn giản là để xác định một danh sách những thứ 1006 00:54:22,000 --> 00:54:26,000 sẽ được hiển thị trong xem bảng. 1007 00:54:26,000 --> 00:54:29,000 Ở đây tôi đang nói rằng tôi muốn bạn để có tập tin plist, 1008 00:54:29,000 --> 00:54:32,000 và tôi muốn bạn để tải nó lên thành một từ điển, 1009 00:54:32,000 --> 00:54:35,000 và một khi bạn có từ điển đó, tôi sẽ trả lời những câu hỏi tương tự một lần nữa. 1010 00:54:35,000 --> 00:54:37,000 Đây là số phần. 1011 00:54:37,000 --> 00:54:41,000 Một, có một hàng cho mỗi giải đấu, và văn bản của mỗi tế bào 1012 00:54:41,000 --> 00:54:46,000 nên hoặc là một trong những đầu tiên, giải đấu đầu tiên, giải đấu thứ hai, và như vậy. 1013 00:54:46,000 --> 00:54:51,000 Cuối cùng, tôi sẽ sử dụng phương pháp này mà chúng tôi chỉ đã nhìn thấy được gọi là prepareForSegue, 1014 00:54:51,000 --> 00:54:54,000 và đây là phương pháp đó là sẽ bị sa thải khi tôi nhấp vào 1015 00:54:54,000 --> 00:54:57,000 trên một trong những hàng và do đó kích hoạt quá trình chuyển đổi 1016 00:54:57,000 --> 00:54:59,000 tôi thiết lập với các mũi tên. 1017 00:54:59,000 --> 00:55:02,000 Điều này được nói rằng tôi có thể có nhiều 1018 00:55:02,000 --> 00:55:05,000 mối quan hệ từ một màn hình khác. 1019 00:55:05,000 --> 00:55:08,000 Nếu tôi có 2 nút và mỗi nút sẽ đưa bạn đến một màn hình khác nhau 1020 00:55:08,000 --> 00:55:10,000 Tôi sẽ có 2 segues, 1 cho mỗi nút. 1021 00:55:10,000 --> 00:55:14,000 Nhưng prepareForSegue này, một lần nữa, sẽ được tái sử dụng 1022 00:55:14,000 --> 00:55:17,000 cho mỗi người trong các mối quan hệ khác nhau, do đó có nghĩa là tôi cần một cách 1023 00:55:17,000 --> 00:55:21,000 xác định nếu bạn bấm nút đầu tiên hoặc bạn bấm vào nút thứ hai. 1024 00:55:21,000 --> 00:55:25,000 >> Nhớ khi tôi cho rằng segue một tên này showDivisions, 1025 00:55:25,000 --> 00:55:29,000 đó là cách tôi biết rằng đây là segue đã được kích hoạt. 1026 00:55:29,000 --> 00:55:32,000 Tất cả những gì tôi muốn làm là tôi muốn nói 1027 00:55:32,000 --> 00:55:35,000 Tôi muốn tìm ra những gì tôi chỉ cần nhấn, 1028 00:55:35,000 --> 00:55:38,000 và do đó, để có được điều đó, tôi có thể nói rằng tôi muốn indexPath hàng lựa chọn, 1029 00:55:38,000 --> 00:55:42,000 nhớ indexPath chỉ nói mà tôi chỉ cần nhấp vào, 1030 00:55:42,000 --> 00:55:47,000 và sau đó tôi muốn nói rằng tôi muốn để tìm ra nơi tôi sẽ. 1031 00:55:47,000 --> 00:55:50,000 DestinationViewController này, đó là một tài sản của các segue. 1032 00:55:50,000 --> 00:55:53,000 Đó là màn hình tôi sẽ, 1033 00:55:53,000 --> 00:55:56,000 vì vậy tôi biết rằng các màn hình tôi sẽ được gọi là DivisionsViewController 1034 00:55:56,000 --> 00:55:59,000 bởi vì tôi tạo ra mà lớp học, 1035 00:55:59,000 --> 00:56:02,000 và vì vậy bây giờ nếu tôi nói d.divisions 1036 00:56:02,000 --> 00:56:06,000 Tôi bây giờ thiết lập một tài sản của bộ điều khiển xem tôi là về để đi. 1037 00:56:06,000 --> 00:56:10,000 Đây là cách tôi đang gửi dữ liệu từ màn hình đến màn hình khác. 1038 00:56:10,000 --> 00:56:13,000 >> Chỉ cần nhìn vào DivisionsViewController này 1039 00:56:13,000 --> 00:56:16,000 bạn có thể thấy ở đây trong file h. 1040 00:56:16,000 --> 00:56:20,000 có là những quân đoàn bất động sản, và đó là những gì tôi đang về cơ bản populating, 1041 00:56:20,000 --> 00:56:25,000 vì vậy đó là làm thế nào tôi biết rằng tôi đang hiển thị các bộ phận tương ứng với 1042 00:56:25,000 --> 00:56:28,000 các giải đấu mà tôi nhấp vào, và một lần nữa, 1043 00:56:28,000 --> 00:56:31,000 xem bảng thực tế trông khá nhiều như nhau, chỉ cần trả lời những 1044 00:56:31,000 --> 00:56:34,000 3 câu hỏi đơn giản cũng như xác định 1045 00:56:34,000 --> 00:56:37,000 điều gì sẽ xảy ra khi bạn chuyển đến màn hình kế tiếp. 1046 00:56:37,000 --> 00:56:40,000 Chỉ cần một vài thứ khác ở đây. 1047 00:56:40,000 --> 00:56:43,000 Bạn nhận thấy ở đầu trang ở đây là thay vì nói # bao gồm 1048 00:56:43,000 --> 00:56:45,000 Tôi bây giờ nói # import. 1049 00:56:45,000 --> 00:56:47,000 Đây chỉ là một điều Objective-C. 1050 00:56:47,000 --> 00:56:52,000 Nhập khẩu về cơ bản là một phiên bản đẹp hơn bao gồm, 1051 00:56:52,000 --> 00:56:57,000 và ví dụ, chúng ta cần phải biết những gì lớp này là, 1052 00:56:57,000 --> 00:57:00,000 vì vậy tôi không thể chỉ nói DivisionsViewController. 1053 00:57:00,000 --> 00:57:05,000 Nếu chúng ta không hashtag bên trong standardio.c tập tin c của chúng tôi. 1054 00:57:05,000 --> 00:57:07,000 trình biên dịch không có ý tưởng những gì printf là. 1055 00:57:07,000 --> 00:57:12,000 Tương tự như vậy, nếu tôi không nhập khẩu các DivisionsViewController 1056 00:57:12,000 --> 00:57:16,000 trình biên dịch thực sự không có ý tưởng những gì DivisionsViewController một. 1057 00:57:16,000 --> 00:57:19,000 Chỉ cần chắc chắn rằng bên trong các file khác nhau. M bạn chắc chắn rằng nhập khẩu 1058 00:57:19,000 --> 00:57:25,000 H tập tin tương ứng. để trình biên dịch biết những gì đang xảy ra. 1059 00:57:25,000 --> 00:57:31,000 >> Cuối cùng, những gì Apple cuối cùng không được hiển thị một số dữ liệu bằng cách sử dụng một cái nhìn web, 1060 00:57:31,000 --> 00:57:35,000 và do đó, một cái nhìn web là một đối tượng mà bạn có thể nhúng 1061 00:57:35,000 --> 00:57:37,000 một trình duyệt web nhỏ bên trong ứng dụng của bạn. 1062 00:57:37,000 --> 00:57:40,000 Tất cả những gì bạn cần làm là cung cấp một URL vào trình duyệt web của bạn, 1063 00:57:40,000 --> 00:57:43,000 vì vậy tôi muốn đi mlb.mlb.com, 1064 00:57:43,000 --> 00:57:46,000 và điều này là làm thế nào tôi có thể truy cập vào trang chủ cho mỗi đội, 1065 00:57:46,000 --> 00:57:49,000 và như vậy bằng cách đi qua trong URL này 1066 00:57:49,000 --> 00:57:52,000 xem web có thể hiển thị cho tôi, và tôi có thể duyệt qua xung quanh, 1067 00:57:52,000 --> 00:58:01,000 và giả lập trong việc sử dụng đó. 1068 00:58:01,000 --> 00:58:03,000 Bây giờ điều này đến từ plist của tôi. 1069 00:58:03,000 --> 00:58:07,000 Nếu tôi nhấp vào điều này cũng đến từ plist của tôi, và trượt này đã được xử lý 1070 00:58:07,000 --> 00:58:09,000 bằng cách xác định những segues. 1071 00:58:09,000 --> 00:58:12,000 Tôi bấm và một nhiều hơn, 1072 00:58:12,000 --> 00:58:15,000 và bây giờ ở đây là UIWebView của tôi, vì vậy chỉ cần như thế 1073 00:58:15,000 --> 00:58:19,000 đây là trang web cho URL mà tôi chỉ cần nhúng, 1074 00:58:19,000 --> 00:58:21,000 và tôi không phải để xử lý bất cứ điều gì điên. 1075 00:58:21,000 --> 00:58:24,000 Điều này là làm thế nào để hiển thị một trang web. 1076 00:58:24,000 --> 00:58:27,000 Những điều như thế này nút quay lại ở đây cũng được đưa ra với tôi 1077 00:58:27,000 --> 00:58:33,000 hoàn toàn miễn phí bởi vì tôi đã xác định các mối quan hệ bằng cách sử dụng segues. 1078 00:58:33,000 --> 00:58:37,000 >> Bất kỳ câu hỏi nào? Yeah. 1079 00:58:37,000 --> 00:58:40,000 [Sinh viên] Vì vậy, khi bạn sử dụng alloc, bạn không bao giờ có bất cứ điều gì miễn phí? 1080 00:58:40,000 --> 00:58:43,000 Chính xác, khi bạn gọi alloc và init, bạn không phải miễn phí. 1081 00:58:43,000 --> 00:58:46,000 IOS sẽ xử lý tất cả những điều đó cho bạn. 1082 00:58:46,000 --> 00:58:51,000 Thật là tuyệt vời, và bạn không vi phạm bất kỳ quy tắc. Yeah. 1083 00:58:51,000 --> 00:58:54,000 [Sinh viên] Nếu bạn để bao gồm các đội có thể phù hợp trên màn hình, 1084 00:58:54,000 --> 00:58:58,000 nó sẽ tự động có một lựa chọn di chuyển, hoặc là một cái gì đó bạn cần phải thêm? 1085 00:58:58,000 --> 00:59:01,000 Chính xác, nếu tôi có đội hơn, ví dụ, nó sẽ tự động sẽ xử lý 1086 00:59:01,000 --> 00:59:04,000 di chuyển cho tôi, và tất cả các mối quan tâm thực hiện 1087 00:59:04,000 --> 00:59:08,000 với bảng khổng lồ cũng được xử lý hoàn toàn cho tôi. 1088 00:59:08,000 --> 00:59:11,000 >> Các câu hỏi khác? 1089 00:59:11,000 --> 00:59:13,000 Tất cả các mã này sẽ được đăng. 1090 00:59:13,000 --> 00:59:16,000 Chúng tôi loại che đậy một chút của các chi tiết nhỏ hơn, 1091 00:59:16,000 --> 00:59:19,000 nhưng những thứ như thiết lập một số thuộc tính để xem web 1092 00:59:19,000 --> 00:59:22,000 chỉ là những điều mà bạn có thể nhận được bằng cách duyệt tài liệu hướng dẫn của Apple, 1093 00:59:22,000 --> 00:59:24,000 đó là thực sự, thực sự độc đáo đặt ra. 1094 00:59:24,000 --> 00:59:27,000 Họ có rất nhiều các ứng dụng mẫu và ví dụ tập quán 1095 00:59:27,000 --> 00:59:34,000 các API khác nhau, vì vậy chắc chắn kiểm tra nội dung nếu bạn có thể. 1096 00:59:34,000 --> 00:59:36,000 Chỉ cần một số liên kết hữu ích bạn có thể muốn có một cái nhìn tại. 1097 00:59:36,000 --> 00:59:38,000 Đây là một số hướng dẫn tài liệu tiện dụng. 1098 00:59:38,000 --> 00:59:41,000 Các URL là lớn, vì vậy họ đang rút ngắn. 1099 00:59:41,000 --> 00:59:44,000 Một trong những đầu tiên là toàn bộ thư viện tài liệu. 1100 00:59:44,000 --> 00:59:46,000 Có ít thanh tìm kiếm, vì vậy nếu bạn bắt đầu nút đánh máy 1101 00:59:46,000 --> 00:59:50,000 nó sẽ bắt đầu cung cấp cho bạn tất cả các thông tin về tất cả những điều bạn có thể làm với một nút bấm. 1102 00:59:50,000 --> 00:59:53,000 Tôi cũng bao gồm Bảng Lập trình Xem hướng dẫn. 1103 00:59:53,000 --> 00:59:56,000 Nó xử lý xem bảng chi tiết hơn, 1104 00:59:56,000 --> 01:00:00,000 làm thế nào để làm những việc như tự động thêm vào các tế bào hoặc chỉnh sửa các tế bào hoặc loại bỏ chúng. 1105 01:00:00,000 --> 01:00:02,000 >> Có rất nhiều các ứng dụng mẫu từ Apple sẽ cho bạn thấy làm thế nào để làm điều đó, 1106 01:00:02,000 --> 01:00:05,000 và cuối cùng, cuối cùng là một Hướng dẫn giao diện con người, 1107 01:00:05,000 --> 01:00:09,000 và điều này về cơ bản là một số cuộc thảo luận của các thành phần giao diện người dùng, 1108 01:00:09,000 --> 01:00:12,000 những thứ như không làm cho một nút đó là 4 điểm ảnh của 4 pixels. 1109 01:00:12,000 --> 01:00:15,000 Đó là một ý tưởng tồi, và những thứ khác mà Apple muốn bạn làm 1110 01:00:15,000 --> 01:00:18,000 khuyến khích thiết kế tốt. 1111 01:00:18,000 --> 01:00:23,000 >> Bất kỳ câu hỏi cuối cùng trước khi chúng tôi kết thúc? 1112 01:00:23,000 --> 01:00:27,000 Tất cả các quyền, chắc chắn cảm thấy tự do để chúng ta sẽ có nhãn đặc biệt trên bàn. 1113 01:00:27,000 --> 01:00:30,000 Chúng tôi sẽ có một iOS, vì vậy chắc chắn cảm thấy tự do để sử dụng đó. 1114 01:00:30,000 --> 01:00:34,000 Nếu bạn muốn làm việc với các bạn cùng lớp của bạn về dự án 1115 01:00:34,000 --> 01:00:37,000 hoặc giúp đỡ tìm ra một số công cụ iOS ngẫu nhiên 1116 01:00:37,000 --> 01:00:40,000 cảm thấy tự do để gửi email cho tôi, và chắc chắn lướt qua tất cả các trực tuyến mã vì 1117 01:00:40,000 --> 01:00:43,000 chỉ trong sự quan tâm của thời gian, chúng tôi loại che đậy hơn 1118 01:00:43,000 --> 01:00:45,000 tốt hơn các chi tiết hạt của sự vật. 1119 01:00:45,000 --> 01:00:47,000 Nhưng nếu không, sau đó may mắn trên iOS dự án của bạn, và tôi hy vọng chúng tôi có 1120 01:00:47,000 --> 01:00:53,000 một làn sóng lớn của các ứng dụng trong App Store. 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]