[Powered by Google Translate] [Hội thảo] [iOS: Viết ứng dụng như một Boss]
[Tommy MacWilliam] [Đại học Harvard]
[Đây là CS50.] [CS50.TV]
>> Được rồi, tất cả mọi người, lên iOS: Viết Apps như một Boss.
Hội thảo này sẽ tập trung vào việc viết các ứng dụng cho iPhone
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
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,
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
hoặc cái gì đó tương tác với Internet tôi sẽ nói về điều đó là tốt.
Đây là chương trình nghị sự ngắn gọn của chúng tôi.
>> IOS ứng dụng được viết bằng một ngôn ngữ được gọi là Objective-C,
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ả,
vì vậy chúng tôi sẽ nói một chút về ngôn ngữ riêng của mình
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,
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ờ.
Đó là một vài gigabyte.
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
lý tưởng chạy phiên bản mới nhất của OS X.
Nếu bạn không, không có vấn đề.
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
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.
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.
Có rất nhiều các nguồn tài nguyên trong khuôn viên trường cho rằng.
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.
Objective-C về mặt kỹ thuật là những gì được gọi là một bộ siêu của C.
Điều đó có nghĩa rằng bất kỳ mã C cũng là mã Objective-C hợp lệ.
Đ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.
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,
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ụ
bạn ghét về C, và nó là loại đi trong C-Mục tiêu.
>> Bây giờ, Objective-C cũng có một thư viện chuẩn lớn hơn nhiều,
do đó, có rất nhiều chức năng mà bạn nhận được cho bên trong miễn Objective-C.
Nhớ khi chúng tôi đã viết PHP, chúng tôi nhận thấy rằng chúng ta đã đi từ
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.
Điều tương tự cũng xảy ra trong iOS.
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ự
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.
Phần Mục tiêu của Mục tiêu-C là tham khảo một cái gì đó
được gọi là Lập trình hướng đối tượng.
Đâ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
rất nhiều những khái niệm này đã.
Ý tưởng đằng sau Lập trình hướng đối tượng là bạn đang đi để cấu trúc
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,
và các lớp này được thực sự tôn vinh cấu trúc.
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,
và điều này có thể có các thành viên.
Ví dụ, một nút trong một danh sách liên kết có thể có những thứ khác
giống như một giá trị, một con trỏ đến nút tiếp theo trong danh sách,
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.
Các lớp học là rất tương tự, trừ
các lớp học cũng có thể có các chức năng bên trong của họ.
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 *.
>> 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
bên trong những điều đó.
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.
Ví dụ, chúng ta sẽ xem xét một loạt các built-in Objective-C lớp học.
Một trong số đó có thể là lớp học mà đại diện cho quan điểm cho màn hình,
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
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,
đã viết lớp này cho tôi, và nó xử lý những thứ như hiển thị các nút
hoặc làm cho màn hình, và chúng tôi sẽ thực sự đau đớn
để 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
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à
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,
cụ thể là thực hiện một ứng dụng.
Đó 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.
>> Và cuối cùng, quan trọng với lập trình hướng đối tượng là
nó dẫn đến dữ liệu đóng gói.
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
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.
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.
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ừ
một màn hình bên trong ứng dụng của chúng ta về điều đó,
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
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
C-Mục tiêu.
Cảnh báo trước, cú pháp cho Objective-C là chuối.
Nó cũng giống như không có gì chúng ta đã thấy trước đây,
vì vậy nó là một chút của một đường cong học tập để làm quen
những gì heck thực hiện điều này có nghĩa là gì?
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
để bắt đầu viết các ứng dụng.
>> Để khai báo một lớp, nói ở đây là lớp học của tôi, nó tồn tại,
và có thể đây là một số điều mà tôi sẽ xác định sau này,
Tôi sẽ nói @ interface.
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.
Và sau đó ở một nơi khác tôi sẽ nói @ end,
và tất cả mọi thứ ở giữa giao diện và kết thúc @ @
là có được lớp học của tôi.
Điều đó là có được những gì bên trong các tập tin. H.
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.
Tôi không nhất thiết nói với bạn những gì họ làm được nêu ra,
nhưng trình biên dịch cần phải biết rằng chúng tồn tại.
Sau này trong các tập tin m của chúng tôi bởi vì m cho Objective-C
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.
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.
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
bên trong lớp tất cả những gì họ làm.
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
int n hoặc nút * tiếp theo,
và C-Mục tiêu chúng ta sẽ sử dụng từ khoá @ tài sản,
và đây là những gì đang xảy ra để xác định tài sản,
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.
>> Gọi chức năng trong Objective-C cũng là chuối.
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
và mở paren và sau đó đã cho nó một danh sách các đối số.
Đâ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.
Nếu tôi muốn khai báo một hàm hoặc một phương pháp
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,
do đó, loại hoán đổi cho nhau, nhưng không thực sự,
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.
Nó sẽ trở lại không có gì, do đó, nó sẽ là kiểu void.
Đây là kiểu trả về của chức năng của tôi.
Bây giờ chúng tôi có parens đây bởi vì tôi không biết.
Tiếp theo là có được tên của chức năng của tôi,
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.
Có gì mới ở đây là anh chàng này ở đây.
Dấu gạch ngang này thực sự là cần thiết, và điều này nói là
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.
>> 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ư
struct n nút, và thực sự tạo ra
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
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
khởi tạo các lớp học giống như chúng ta khởi tạo struct
trước khi chúng ta có thể gọi phương thức này trên đó.
Nếu tôi muốn bắt đầu thêm đối số cho phương pháp của tôi
nó được chuối nhiều hơn.
Dưới đây là tên phương pháp của tôi.
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ố.
Phương pháp này có một đối số.
Các loại đối số của nó là một int, và tên của các đối số đó
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.
Một lần nữa, đây là phương pháp. Phải mất một đối số.
>> Nếu bạn muốn để bắt đầu thêm đối số hơn nó được chuối hơn
trong đó chúng tôi đã đại tràng nói ở đây đi kèm danh sách các đối số.
Số đầu tiên là một số nguyên.
Bây giờ, số thứ hai là thú vị.
Biến rằng tôi sẽ được sử dụng bên trong chức năng của tôi
được gọi là f, do đó, bên trong chức năng của tôi, tôi có thể nói
f + = 1 hoặc một cái gì đó.
Đ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ố.
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
Objective-C thực hiện các quyết định nói, okay, chỉ cần để nó thực sự rõ ràng
khi bạn gọi một phương pháp tất cả các thông số này là gì
Tôi đang thực sự sẽ để đặt tên cho tất cả.
Khi bạn gọi một phương thức, bạn thực sự sẽ nói andFloat,
và sau đó bạn sẽ vượt qua nó.
>> 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,
do đó, nếu chúng tôi đã có một đối số thứ 3, tôi có thể nói andFloat
và một phao và như vậy.
Khi tôi gọi những phương pháp này là tất nhiên của chuối,
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,
và tôi muốn gọi nó, chứ không phải nói rằng foo mở / parens gần
Tôi sẽ mở một khung.
Đây là tên của phương pháp của tôi.
Tôi sẽ đóng khung, và đây là đối tượng tôi gọi nó trên.
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
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ọ.
>> Ở đây tôi đã tự ý tạo ra một đối tượng của một số lớp,
và đây là cú pháp để thực hiện điều đó.
Có 2 bước để tạo một đối tượng.
Bước đầu tiên là để nói rằng tôi muốn phân bổ không gian.
Đây là tương đương với một malloc. Chúng tôi không có để nói malloc nữa.
Chúng tôi bỏ m, làm cho nó alloc, và thay thế c. Với m.
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ó.
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
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
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.
Đầu tiên chúng ta phân bổ không gian, giống như chúng ta đã làm trong C,
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.
Sau đó, chúng tôi đang trở về điều này vào một o đối tượng.
Có một ngôi sao ở đây vì đây là kỹ thuật một con trỏ,
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.
>> Bây giờ chúng ta đã khởi tạo lớp này được gọi là NSObject,
và điều này chỉ là một lớp ngẫu nhiên mà Apple đã có.
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
trong này o đối tượng, do đó, điều đó có nghĩa rằng nếu tôi định nghĩa
những phương pháp này, tôi có thể gọi chúng như thế này.
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ố,
vì vậy đây là phương pháp thanh, mà phải mất một đối số,
và đây là baz: qux phương pháp, do đó, điều này có 2 đối số.
Điều này đang kêu gọi một chức năng trên này o đối tượng.
Có ý nghĩa?
Cú pháp nên có ý nghĩa, nhưng bạn loại đã quen với nó.
>> Đượ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
không nhất thiết phải được xây dựng vào C.
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,
và nó đã thực sự gây phiền nhiễu.
Objective-C có tất cả được xây dựng trong cho chúng ta, và nó được xây dựng trong
bằng cách sử dụng lớp này được gọi là NSString.
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.
Thay vì nói "CS50" chúng ta nói @ "CS50"
và đây chỉ là cú pháp để khai báo chuỗi trong C-Mục tiêu.
Điều này là vô cùng dễ dàng để quên, do đó, không.
Bây giờ, khi tôi đã có điều này, đây là một chuỗi, nhưng thông báo
nó thực sự chỉ là một đối tượng.
Tôi nói NSString, có nghĩa là tôi instantiated các lớp học
được gọi là NSString, mà người khác đã viết cho tôi,
và họ rất tốt đẹp về nó, và vì vậy bây giờ
Tôi có thể bắt đầu cuộc gọi phương pháp trên đó.
Nếu tôi gọi là chiều dài phương pháp này đối tượng
nó sẽ trở về với tôi chiều dài của chuỗi.
Đây là giống như strlen trong C.
Điều này sẽ trở lại 4.
>> 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.
Đây là một phương pháp nói trên chuỗi s
Tôi muốn bạn để có được các ký tự 0,
và do đó, điều này sẽ trở lại cho tôi những ký tự c,
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.
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.
Đó là những chuỗi.
Chúng tôi cũng đã mảng kích thước biến được xây dựng.
Ghi trong C khi ta khai báo một mảng
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.
Khi chúng tôi đến JavaScript và PHP chúng ta có thể bắt đầu
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ố.
Chúng ta có thể làm như vậy trong C-Mục tiêu.
Thay vì tạo ra một mảng trong cách C bình thường
chúng tôi có một lớp được gọi là NSMutableArray.
Ngoài ra còn có NSArray,
và điều này về cơ bản đóng gói một số mảng.
Đ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ổ
không gian cho một mảng mới, và sau khi tôi phân bổ nó
Sau đó tôi cần phải khởi tạo nó.
Một lần nữa, chỉ cần gọi điện thoại 2 phương pháp này.
Bây giờ điều này có nghĩa là bên trong của đối tượng này
Tôi có một mảng sản phẩm nào ngồi ở đó.
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.
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.
Nếu tôi muốn ngược lại loại bỏ mà tôi có thể nói tôi muốn
loại bỏ các đối tượng ở nơi đầu tiên trên mảng hoặc phản đối một.
>> Có ý nghĩa?
Được rồi, bạn loại được sử dụng để điều này khung hình vuông.
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.
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,
và đó là nơi ông thực sự bắt đầu viết rất nhiều mã
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,
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 đó
trở lại khi Apple lần đầu tiên được bắt đầu.
Đó là ở khắp mọi nơi.
Chúng ta hãy xem xét một ví dụ toàn diện Objective-C.
Ở đây tôi bên trong XCode.
Để có được ở đây, lần đầu tiên tôi tải về XCode từ App Store,
mở nó lên, và sau đó tôi đã đi lên đây để tập tin,
trên đây để dự án mới, và sau đó.
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,
và vì vậy chúng tôi sẽ xem xét các tùy chọn sau,
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,
Tôi đến đây, và tôi nói công cụ dòng lệnh,
và điều này là một ứng dụng mà tôi có thể chạy tại dòng lệnh
giống như chúng ta đã chạy từ C.
Đó là cách tôi tạo ra dự án này, và vì vậy bây giờ tôi đang ở đây,
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.
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.
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.
Ở đây chúng ta có thể bỏ qua điều này cho bây giờ.
Đ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ự
bao giờ phải lo lắng về.
>> Chúng ta hãy nhìn vào khối này đầu tiên ở đây.
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?
Học sinh đầu tiên này ở đây, điều này có lẽ là một lớp học.
Đâ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.
Đ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,
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
đố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.
Đâu là lớp học đến từ đâu?
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.
Chúng ta có thể thấy ở đây tôi có một Student.h và Student.m một.
H tập tin, hãy nhớ, là nơi tôi tuyên bố tất cả những điều
sẽ tồn tại trong lớp.
>> Chúng ta hãy nhìn vào lúc đó.
Đượ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ó
tờ khai của tất cả mọi thứ sẽ tồn tại trong lớp học của tôi.
Sau đó, tôi có một dấu hai chấm. Sau đó, tôi có điều này NSObject.
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 đó.
Này nói rằng tất cả mọi thứ một NSObject có thể làm
nơi NSObject là lớp này được viết bởi một người khác,
tất cả mọi thứ NSObject này có thể làm tôi muốn để có thể để làm điều đó.
Bằng cách nói: NSObject đó có nghĩa là tôi về cơ bản
thừa hưởng tất cả các chức năng của lớp khác.
Đ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.
Xuống đây tôi là tạo ra 2 thuộc tính.
Đ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
bên trong cấu trúc của tôi, do đó, mỗi học sinh có một tên
đó là một chuỗi, và học sinh cũng có một lớp,
mà là một int.
>> 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.
Tôi được gọi là phương pháp của tôi, initWithName, và phải mất một đối số,
và tranh luận đó là một chuỗi, và tôi gọi nó là tên.
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.
Ở đây, bây giờ tôi là bên trong của tập tin m. Của tôi,
m để thực hiện, tôi đoán.
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
những gì initWithName.
Tôi có initWithName, tên của các tham số của tôi, và sau đó điều này
là nơi tôi đang thực sự tạo ra một sinh viên,
và vì vậy đây là một chút khó hiểu, nhưng điều này là loại boilerplate
mà bạn muốn bao gồm trong xây dựng của bạn.
Chức năng này khởi tạo ở đây, initWithName, là một loại nhà xây dựng.
Về cơ bản bạn đang xây dựng một đối tượng sinh viên mới
và có thể gửi một số dữ liệu bên trong của nó.
Đ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.
>> Nhớ rằng khi tôi nói trở lại đây trong file h.
rằng mọi thứ NSObject một có một học sinh cũng có.
Đ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à
đảm bảo rằng các NSObject mà tôi đang kế thừa tất cả các dữ liệu đó từ
cũng được khởi tạo đúng cách.
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
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
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ó.
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
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.
>> Trong JavaScript và PHP chúng tôi đã từ khóa này gọi như thế này
và điều này thể hiện hiện tại của một lớp.
Trong C-Mục tiêu chúng ta gọi là tự này.
Khi tôi nói self.name, điều đó có nghĩa là các đối tượng
Tôi chỉ cần tạo ra khi tôi nói sinh viên alloc init,
đó là sẽ đưa cho tôi một đối tượng.
Điều đó có nghĩa là tôi muốn để thiết lập tên của đối tượng đó
bất cứ điều gì tôi chỉ thông qua nhập
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,
để self.name cho biết tên của các đối tượng sinh viên
sẽ là bất cứ điều gì bạn chỉ cần thông qua nhập
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ì đó.
>> Câu hỏi?
Được rồi, do đó, điều này tự = siêu init,
nếu bạn không hoàn toàn hiểu được những thứ thừa kế đừng lo lắng.
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
làm điều đó, và bạn sẽ được tốt để đi.
Vâng >> [Sinh viên]. Không có nghĩa là tự nếu?
Đ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ị,
và nếu nó là null, sau đó chúng tôi đã thoát.
Đâ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
nếu chúng ta bắt đầu cố gắng để thao tác nó.
Đó là sinh viên lớp học của chúng tôi.
Đ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.
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,
và thay vào đó tôi chỉ đơn giản là có thể nói alice.name,
và bây giờ tôi sẽ đặt tên tài sản đó.
>> Tương tự như vậy, nếu tôi muốn sử dụng phương pháp initWithName
Tôi chỉ có thể nói alloc, và sau đó thay vì nói init
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.
Tại thời điểm này, điều này Bob đối tượng có một tên bằng Bob.
Được rồi, xuống đây tôi đang sử dụng mà NSMutableArray mà chúng tôi xem xét trước đó.
Tôi đang phân bổ space.Then tôi khởi tạo một mảng mới.
Tôi sẽ thêm 2 điều cần nó.
Mảng này hiện đang nắm giữ các đối tượng sinh viên.
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.
Tôi nói nó là một mảng, thời gian.
Sau đó, tôi có thể đặt bất cứ điều gì bên trong của nó mà tôi muốn.
Ở đây tôi có 2 đối tượng.
>> Cuối cùng, tôi có một đối tượng ở đây, TF này.
Trên đây trong TF.h về cơ bản là giống nhau.
Tôi đang kế thừa từ NSObject, và bằng cách này,
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,
loại của boilerplate giao diện.
Nó có một tài sản của học sinh.
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,
và như vậy có nghĩa là sau khi tôi tạo ra đối tượng này TF
Tôi có thể gọi đây là lớp phương pháp trên nó như thế này.
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
các công cụ phát triển ứng dụng thú vị?
>> Được rồi, vậy chúng ta hãy thực sự làm cho một ứng dụng iPhone.
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,
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
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ụ,
đượ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.
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ó
hoặc như tôi đang đi sâu vào các nghệ sĩ.
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,
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.
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,
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.
>> 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.
Phương pháp này nói, khi bạn nhấn nút này
Tôi muốn làm một cái gì đó, và cuối cùng, một lần nữa,
chúng ta sẽ được sử dụng từ khoá này tự để truy cập thể hiện hiện tại.
Xây dựng giao diện trong iOS thực sự là thực sự, thực sự dễ dàng.
Họ có tốt đẹp này kéo và thả giao diện được gọi là giao diện Builder,
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
là IBOutlet và IBAction.
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,
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,
bạn sẽ nói đó là một lối thoát.
Tương tự như vậy, nếu bạn muốn để đại diện cho một xử lý sự kiện
sau đó bạn sẽ nói đó là một hành động.
>> Để thực sự dây này đại diện đồ họa
và mã của bạn nó thực sự, thực sự đơn giản.
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,
và chúng ta sẽ thấy một ví dụ về điều này thực sự nhanh chóng.
Bạn kiểm soát nhấp vào nơi nó nói View Controller.
Bạn sẽ để kéo vào giao diện, hoặc ngược lại,
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
theo một hướng khác.
Chúng ta hãy xem xét một ví dụ iOS thực sự đơn giản.
>> Hãy tạo ra một dự án mới.
Tôi sẽ đi lên đây để ứng dụng,
và tôi sẽ bấm vào ứng dụng View Single.
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.
Tôi sẽ gọi nó là Hello.
Thật thú vị, Apple giả định bạn đang tạo ra một sản phẩm
để bạn có thể bán nó và họ có thể kiếm tiền.
Xuống ở đây tôi sẽ nói rằng đây là một ứng dụng iPhone.
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
hỗ trợ cả hai thiết bị mà bạn có thể làm điều đó quá.
Đây là những gì bạn muốn đánh dấu của bạn trông như.
>> Bạn muốn sử dụng storyboards, mà chúng ta sẽ thấy sau này,
và bạn chắc chắn muốn sử dụng tự động tính tham khảo,
đó là một tính năng tốt đẹp mà ngăn bạn phải nói malloc và miễn phí.
Trừ khi bạn muốn gọi malloc và miễn phí, tôi sẽ để lại kiểm tra này.
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ó.
Tôi nhấn sẽ tạo ra, và ở đây chúng tôi đi.
Tôi tạo ra một dự án mới.
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,
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ì.
IOS là rất tốt.
>> Ví dụ, đây này ViewController.h,
điều này sẽ đại diện cho bộ điều khiển xem đầu tiên của tôi,
vì vậy màn hình đầu tiên bên trong ứng dụng của tôi.
Bây giờ chúng ta biết những gì đang nói.
Chúng tôi đang nói tôi kêu gọi này ViewController lớp,
và một ViewController làm mọi thứ mà UIViewController làm,
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
như hiển thị màn hình.
Đâ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,
và nó quay ra rằng tôi thực sự không cần bất cứ điều này.
Đây là boilerplate mã mà Apple mang lại cho tôi miễn phí.
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,
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.
Được rồi, vì vậy đây là màn hình trống rỗng.
>> Bây giờ hãy click vào MainStoryboard.storyboard này,
và đây là nơi nó bắt đầu trở nên thú vị.
Điều này thể hiện màn hình đầu tiên trên ứng dụng của tôi.
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.
Trong Android, bạn có để tạo ra một thẻ nút,
nhưng trong iOS nếu tôi chỉ đi xuống đây để góc dưới bên phải
và nếu tôi nhấp vào này thứ 3 ở đây, nơi nó nói Đối tượng,
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.
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,
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.
Nếu tôi muốn thay đổi các văn bản, tôi có thể nhấn đôi,
nói điều gì đó hấp dẫn như "Bấm nhớ."
Đượ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ó,
để 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.
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.
Nếu tôi muốn để ngăn chặn nó, bạn có thể nhấp vào nút dừng
bởi vì nó thú vị hơn.
>> 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.
Để làm điều đó những gì tôi cần phải làm là tôi cần phải tạo
xử lý sự kiện mới hoặc một hành động.
Đ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à
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.
Tôi bên trong ViewController.h.
Tôi cần phải nói rằng một phương thức tồn tại.
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.
Tôi cần phải cung cấp một loại.
Các loại này là có được điều đó IBAction mà chúng ta đã thấy trước đó.
Đây là một xử lý sự kiện, do đó, nó sẽ trở lại một IBAction,
và điều này là một gợi ý để XCode để nói rằng
đây là một cái gì đó tôi muốn để dây một cái gì đó để.
Tôi có thể cung cấp cho nó một cái tên, như dấu chấm phẩy, buttonPressed.
>> 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.
Tôi đã cho biết phương pháp này có tồn tại.
Bây giờ chúng ta hãy đi vào ViewController.m,
và hãy nói rằng phương pháp này có thể làm được.
Nếu tôi bắt đầu đánh máy, ví dụ, (void) buttonPressed
thông báo XCode là thực sự tốt đẹp và autocompletes cho tôi.
Đó là thực sự tuyệt vời.
Chú ý ở đây là bên trong các tập tin. M tôi cũng có thể nói khoảng trống,
và điều này là bởi vì IBAction đó không phải là thực sự là một loại.
Nó thực sự hashtag xác định một nơi nào đó để có một khoảng trống,
và một lần nữa, đây chỉ là một gợi ý để XCode nói rằng
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.
Khi nút này được nhấn, tôi sẽ làm điều gì đó gây phiền nhiễu
như hiển thị một popup.
>> Để 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,
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.
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.
Điều đầu tiên tôi cần làm là phân bổ không gian.
Tôi muốn có một UIAlertView.
Tôi muốn phân bổ không gian. Đó là phương pháp đầu tiên của tôi.
Phương pháp tiếp theo của tôi là tôi muốn khởi tạo nó,
và vì vậy tôi có phương pháp này, lớn dài được gọi là initWithTitle.
Đó là cơ bản để kiểm soát những gì bật lên này nói.
Tiêu đề của sổ bật lên của tôi có thể được.
Thông điệp của popup này có thể được "Đây là iOS."
Đại biểu điều, tôi không biết đó là gì.
Hãy nói rằng nó không có gì.
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à,"
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.
>> Được rồi, tôi tạo ra một một trong những phụ. Hiện chúng tôi đi.
Điều này là làm thế nào tôi có thể tạo một popup mới.
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ị.
Để làm điều đó tôi có thể nói cảnh báo và hiển thị,
và một lần nữa, tự động hoàn chỉnh là siêu đẹp.
Nếu tôi quên điều đó, nếu tôi chỉ cần gõ vào s,
Tôi có thể di chuyển qua đây để tìm ra nó là cái gì,
và nó sẽ lọc độc đáo.
Bây giờ tôi tạo ra popup này mới.
Chúng tôi sẽ quay trở lại đại biểu có nghĩa là gì sau đó,
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
khi tôi bấm nút, do đó, tôi sẽ trở lại kịch bản của tôi,
và bây giờ tôi muốn đính kèm này IBAction.
Điều đầu tiên bạn muốn làm là nhấn nút.
Khi tôi bấm nút này, tôi muốn một cái gì đó xảy ra.
Tôi sẽ không giữ kiểm soát.
Tôi sẽ để click và kéo từ nút
hơn ở đây, nơi nó nói View Controller.
Chúng ta có thể thấy rằng nó độc đáo sáng lên.
>> 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.
Một trong số đó là sự kiện mà tôi có thể đăng ký.
Đâ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.
Đ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,
vì vậy đó là một gợi ý.
Nếu tôi bấm vào nút bấm, bây giờ tôi đã đăng ký xử lý sự kiện.
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.
Trong C-Mục tiêu đó là thực sự dễ dàng.
Nếu tôi chạy này một lần nữa
bây giờ khi tôi bấm nút xử lý sự kiện của tôi là sẽ sa thải,
và tôi sẽ nhận được popup này.
Siêu, siêu đơn giản.
>> 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ý
trên một thành phần nếu tôi nhấp vào nút này
và tôi đến đây để các bên phải
đầ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,
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
hoặc bất cứ điều gì.
Nếu tôi muốn xem tất cả các sự kiện vào nút này
nếu tôi đến tất cả các cách trên đây để các bên phải
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.
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ì,
và tôi vừa đăng ký là sự kiện này được gọi là cảm ứng Up Bên trong,
và điều này nói rằng ngay sau khi ngón tay của tôi đến nút
sự kiện đang xảy ra cháy, và đó là chính xác những gì vừa xảy ra.
Đây là loại sự kiện mặc định ấn nút.
>> Bất kỳ câu hỏi nào cho đến nay?
Đượ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
vào những thứ bên trong giao diện của chúng tôi.
Hãy nhớ điều đầu tiên chúng tôi phải làm là để tìm mã,
và sau đó chúng tôi có dây lên giao diện cho mã,
và ứng dụng đầu tiên của chúng tôi.
Được rồi, đó là thực sự mát mẻ, và chúng tôi tạo ra nút này.
Đ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
đại diện cho các nút này?
Ví dụ, trong Tic Tac Toe tôi có 9 nút,
và nó muốn được siêu, siêu khó chịu khi phải kéo và thả 9 lần
hoặc nếu tôi đã có để làm cho Tic Tac Toe với 81 thay vì 9
và tôi đã phải kéo và thả 81 lần, và đó là lame.
Những gì chúng ta có thể làm gì để thay là giống như một HTML
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ứ
ID của họ, có một khái niệm tương tự như trong iOS được gọi là thẻ.
>> Tag đơn giản chỉ là một định danh số duy nhất cho một thành phần.
Nếu tôi nói điều này có một thẻ từ 0, ví dụ,
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,
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
, viewWithTag phương pháp trên đối tượng trên đây
self.view, đại diện cho màn hình hiện tại, ví dụ.
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.
Chúng ta hãy xem xét điều này bằng cách xây dựng Tic Tac Toe.
Thứ nhất, đây là kịch bản của tôi.
Tôi đã tạo ra 10 nút giao diện người dùng này.
Chú ý tất cả chúng có cùng kích thước.
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
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,
nhưng những gì Tôi cũng đã làm tôi đặt thẻ này.
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.
>> Bây giờ, nếu tôi bấm một nút khác, như thế này thứ hai ở đây,
bây giờ bạn sẽ thấy rằng từ khóa của tôi là 2.
Mỗi phòng trong các nút này chỉ có một thẻ duy nhất,
và do đó, điều này sau đó như thế nào tôi sẽ bắt đầu tương tác
với ứng dụng của tôi.
Đây là tất cả các bên trong của một bộ điều khiển xem,
nhưng đây là những gì chúng tôi có.
Chúng tôi có 3 thuộc tính ở đây.
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.
Về cơ bản này đầu tiên là một mảng đại diện cho nơi Xs và Os.
Một trong những khác ở đây cho chúng ta biết có lần lượt là.
Bạn sẽ nhận thấy rằng tôi cũng có những việc này ở đây.
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.
Chúng tôi cũng có thể cung cấp cho họ một số thông tin bổ sung ở đây.
Đầu tiên này nói nonatomic, và những gì này nói
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.
Bạn có thể làm phức tạp hơn các ứng dụng đa luồng,
và như vậy trở lại trong Scratch chúng tôi đã có các chủ đề khác nhau,
và sprites khác nhau có thể làm những việc khác nhau cùng một lúc.
>> 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,
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.
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.
Này gán chỉ nói rằng đây là một loại tiêu chuẩn.
Đây không phải là một đối tượng hoặc một con trỏ vì đây chỉ là một bool,
để bool được xây dựng vào C-Mục tiêu.
Đ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.
Đó là một tuổi thường xuyên scaler.
Mạnh và yếu, yếu đuối này cho biết, thực sự
Tôi muốn điều này để được trỏ đến một cái gì đó trong bộ điều khiển xem.
Tôi sẽ không thực sự phân bổ hoặc init này bản thân mình.
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.
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.
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
đó là tạo ra các đối tượng này hội đồng quản trị,
và do đó, ở đây tôi có phương pháp một số chi tiết ở đây,
ví dụ, một hành động khi được nhấn nút trò chơi mới,
một hành động cho khi bất kỳ của các nút khác được ép,
và vân vân.
>> Chúng tôi sẽ không nhận ra quá nhiều của logic của Tic Tac Toe,
mặc dù nó rất thú vị, nhưng chúng ta hãy xem xét
một số trong những điều mà chúng ta có thể làm bên trong của iOS.
Phương pháp này trò chơi mới sẽ được bắn
bất cứ khi nào tôi bấm nút trò chơi mới.
Để treo lên, tôi chỉ đơn giản là đi qua kịch bản của tôi.
Tôi nhấp vào trò chơi mới.
Nếu tôi đi qua bên phải, tôi có thể thấy rằng
Chạm Bên trong là dây để phương pháp newGame.
Đó là lý do tại sao điều này sẽ bị sa thải.
Phương pháp newGame được để làm một số thiết lập.
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ị.
Đây là một phương pháp tốt đẹp trên có thể thay đổi mảng.
Điều này sẽ nói đó là X lượt,
và bây giờ tôi sẽ tận dụng lợi thế của điều này viewWithTag.
>> Tôi biết rằng các nút của tôi có các thẻ 1-9,
và đó là một cái gì đó tôi tự ý chọn.
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
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ỳ
Xs hoặc O để lại trên tôi có thể làm điều này.
Tôi có thể nói rằng tôi muốn xem có tag, 1, 2, 3, 4 vân vân.
Điều này sẽ kéo một nút bấm khác nhau mỗi lần.
Ở đây tôi sẽ bỏ nó vào UIButton.
Cũng giống như chúng ta có thể bỏ ints để nổi và ngược lại
điều này nói rằng tôi muốn cast này một UIButton.
Điều đó có nghĩa là các loại này sẽ là một * UIButton
vì các con trỏ, nhưng đừng lo lắng, họ không đáng sợ nữa.
>> Khi tôi đã có nút này tôi sẽ gọi một phương thức trên nó.
Phương pháp này được gọi là setTitle forState, và do đó, điều này nói
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,
và tôi muốn nó là chuỗi rỗng khi nó không ép.
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
ngay khi có ai đánh nó, nhưng chúng tôi muốn nói khi nút được chỉ ngồi đó
Tôi muốn văn bản được để trống.
Cuối cùng, chúng ta sẽ khởi tạo hội đồng quản trị của tôi,
và tôi sẽ nói rằng tất cả mọi thứ hiện đang ở mức 0,
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 có thể thay đổi,
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ó.
Đó là những gì xảy ra khi tôi tạo ra một trò chơi mới.
>> Chúng ta hãy xem xét một số khác.
Phương pháp này ở đây là IBAction đó sẽ được ép
mỗi lần một trong những hình vuông được nhấn.
Bây giờ chúng tôi có một số Tic Tac Toe logic ở đây.
Chúng tôi tìm ra có lần lượt là,
và dựa trên đó chúng tôi thiết lập một X hoặc một O,
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
cho mỗi một đơn của các nút.
Đ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,
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 đó.
Điều đó sẽ không thực sự được thiết kế tốt.
Những gì tôi đang làm ở đây là tôi thực sự sẽ để xác định
thẻ của nút được nhấn.
Bạn nhận thấy rằng phương pháp này chơi mất một đối số.
Nó được gọi là người gửi, người gửi là người gửi sẽ
đại diện cho chính xác những gì được hành động trên.
Nếu tôi nhấn một nút, người gửi sẽ được rằng UIButton
rằng tôi thực sự ép, do đó có nghĩa rằng UIButton
có một thẻ bởi vì tôi đã tạo ra một thẻ.
>> Nếu tôi muốn để có được thẻ, tôi chỉ đơn giản là có thể nói
Tôi muốn các thẻ của người gửi,
và một lần nữa, tôi vừa mới đúc nó vào một UIButton.
Tôi xảy ra để biết rằng người gửi sẽ là một UIButton.
Nó không phải luôn luôn là một UIButton.
Tôi có thể, ví dụ, đăng ký cùng một xử lý sự kiện
cho một cho một nút, một cho một thanh trượt.
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
Tôi muốn này là một nút, và sau đó tôi có thể nhận được thẻ,
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ị.
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,
kiểm tra xem những người đã giành được, vân vân.
>> Bất kỳ câu hỏi này cho đến nay?
Đượ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
của logic Tic Tac Toe, nhưng bây giờ bạn có thể thấy rằng thực sự
tất cả những gì chúng ta đang làm là chúng ta đang Looping trên mảng này,
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
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ế.
Để thực sự chạy ứng dụng này, nếu tôi gõ vào một trong những nút
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
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,
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.
>> Chúng tôi sẽ gửi mã, vì vậy cảm thấy tự do để lướt qua rằng,
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.
Như là thú vị như Tic Tac Toe là, rất nhiều ứng dụng bên trong của iOS
là loại khoan này ra những điều có nhiều màn hình.
Khái niệm đầu tiên mà chúng ta sẽ cần phải nói về các giao thức,
và một giao thức chỉ đơn giản là một tập hợp các phương pháp
mà bạn có thể hứa hẹn để xác định.
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,
nếu kiểu trả về là void, tôi gọi nó là foo.
Nó không có đối số. Tôi có một phương pháp khác.
Nó trả về một int. Tôi gọi nó là thanh này, và phải mất một đối số.
Tất cả các giao thức này là được gọi là SomeProtocol lên đây,
đâ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.
Tôi đã không phải bên trong của giao thức này cho biết những gì foo.
Thay vào đó, tôi chỉ nói rằng bạn có thể xác định foo nếu bạn muốn.
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
Tôi có thể bên trong của lời hứa đó lớp để thực hiện
một số phương pháp này, do đó, ví dụ, nếu nói
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
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.
>> Tại sao là hữu ích?
Rất nhiều các thành phần bên trong của iOS tận dụng điều này
mẫu thiết kế được gọi là đoàn đại biểu, và những gì phân quyền
là, ví dụ, nếu tôi có một hộp văn bản
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,
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
các đại biểu của hộp văn bản này sẽ có một số đối tượng.
Khi tôi nói rằng đây là một đại biểu tại đó có nghĩa là
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
thay vì phải đăng ký hoặc bất cứ điều gì như thế
nó chỉ là để gọi một phương thức trên các đại biểu.
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
mà làm nút ở góc dưới bên phải,
và nên thay vì đăng ký xử lý sự kiện những gì tôi có thể nói được
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
mỗi khi một người nào đó nhấn nút thực hiện,
và điều đó có nghĩa là đối tượng có để thực hiện một số giao thức
nói rằng tôi hứa sẽ xác định rằng hành động nút thực hiện,
bởi vì nếu nó không xác định rằng phương pháp và bạn nhấn xong,
sau đó nó sẽ là khó hiểu.
>> Chúng ta hãy xem một ví dụ.
Ở đây tôi chỉ đơn giản là có một hộp văn bản,
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.
Đây là một tài sản của lớp.
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
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
là có được bộ điều khiển xem.
Điều đó có nghĩa là khi một số hành động xảy ra, chứ không phải đăng ký
xử lý sự kiện riêng biệt tôi muốn bạn gửi cho các đại biểu.
Bây giờ chúng ta hãy nhìn vào bộ điều khiển điểm của tôi.
Bên trong của tập tin h. Tôi đã thực hiện một lời hứa.
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
gọi là UITextFieldDelegate, và một lần nữa,
đâ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.
>> 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.
Tôi đã gọi nó là textFieldShouldReturn
bởi vì đó là những gì nó được gọi là bên trong của giao thức.
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
đâ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.
Tôi đã kết nối đại biểu, và bất cứ khi nào sự kiện này là bắn
đâ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ó
trong khi đó tải chúng ta có thể thấy điều này không.
Trên màn hình của tôi, tôi có 2 điều.
Tôi có lĩnh vực văn bản này, và tôi có nhãn này.
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
bằng bất cứ điều gì người dùng gõ vào bên trong trường văn bản.
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
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.
Đây chỉ là phương pháp độc đoán rằng Apple đã chọn.
>> 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.
Từ bộ điều khiển xem tôi kéo vào hộp văn bản.
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
từ trên đây ở bộ điều khiển xem, tôi đã xác định một tài sản
đó là một IBOutlet của một trường text.
Điều này nói rằng tôi có thể dây này tài sản
một trường văn bản trong giao diện người dùng của tôi.
Bây giờ khi tôi nhấp vào này tôi có thể bắt đầu nhập.
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
một sự kiện mà tôi bây giờ có thể đáp ứng.
Không có sự kiện xử lý.
Đó là cách tôi chỉ trả lời rằng nút thực hiện.
Có ý nghĩa?
>> Đâ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
tạo ra giao thức riêng của bạn, nhưng chỉ cần biết rằng một số
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.
Buttons, ví dụ, sử dụng những IBActions.
Lĩnh vực văn bản, mặt khác, sẽ sử dụng các đại biểu.
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.
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,
ví dụ như vậy, cách tôi nói rằng thực hiện ở góc dưới bên
Tôi đã chọn lĩnh vực văn bản này.
Tôi đi qua đây.
Tôi cuộn xuống một chút để trả lại chìa khóa,
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
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,
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,
nhưng có, nó nói cuộc gọi khẩn cấp trong chữ thực sự nhỏ.
Có bạn đi.
>> Chắc chắn khám phá tất cả các tùy chọn khác nhau trong iOS.
Bất kỳ câu hỏi các đại biểu?
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.
Được rồi, chúng ta hãy tiếp theo có một cái nhìn xem bảng.
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.
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
trang thiết lập, và các loại danh sách những thứ được gọi là xem bảng.
Thực hiện một cái nhìn bảng trong iOS là khá đơn giản.
Thay vì tạo ra một lớp học mà xuống từ đó UIViewController
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à
tất cả mọi thứ một UIViewController không tôi muốn làm,
Tôi nói tất cả mọi thứ một UITableViewController không tôi muốn làm,
để 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.
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.
>> Để hiển thị một bảng tôi cần phải trả lời một số câu hỏi.
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?
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
Như tổ chức, sau đó bạn có Bs, và bạn đã có tiêu đề ít phụ.
Mỗi phòng trong những người được gọi là một phần.
Bạn có thể hoặc có thể không cần những.
Điều đầu tiên bạn cần làm là thực hiện một phương pháp
gọi là tableView: numberOfSectionsInTableView.
Điều đó chỉ đơn giản trả bao nhiêu phần bạn có,
do đó, điều này có thể nói trở lại nếu bạn có một xem bảng lớn.
Câu hỏi tiếp theo mà iOS cần biết là bạn có bao nhiêu hàng?
Ví dụ, bạn đang lật qua một xem bảng.
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.
Nếu bạn là tôi, tất nhiên, không phải là nhiều,
và vì vậy đó là như thế nào iOS biết bao nhiêu tế bào để hiển thị.
>> 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.
Xem bảng của tôi có 3 dòng.
Cuối cùng, iOS cần phải biết những gì mỗi tế bào trông giống như,
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,
tableView: cellForRowAtIndexPath này.
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.
Làm thế nào để biết bao nhiêu lần để gọi nó?
Vâng, bạn nói với nó trong số các hàng trong phần.
Chúng ta sẽ gọi đây là trên mỗi tế bào của chúng ta,
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ư
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.
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
gọi là dequeueReusableCellWithIdentifier.
>> 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ọ,
và điều này thực sự là một trường hợp tốt đẹp trong ví dụ điểm.
Phương pháp này là chỉ nói tôi muốn bạn để cho tôi một tế bào.
Chỉ cần một điều iOS.
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
iOS không muốn làm là phân bổ 100.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ớ
cho các tế bào đó là 99.000 hàng xuống?
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.
Điều này được thực hiện cho bạn.
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.
Tất cả những gì bạn nói là bạn gọi phương pháp này dequeueReusableCellWithIdentifier,
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.
>> 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
ở phía trên của bảng mà bạn đang thực sự sẽ không cần phải sớm
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,
và vì vậy đây là một mối quan tâm thực hiện tốt đẹp.
Bạn không cần phải tự mình phân bổ các tế bào.
Điều đó sẽ cung cấp cho bạn một tế bào.
Nó sẽ trả lại cho bạn một đối tượng di động.
Một khi bạn có các đối tượng di động bạn có thể làm công cụ cho nó.
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.
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
với các tài sản khác được gọi là accessoryType, và vv và vv.
>> Hãy có một cái nhìn thực sự thực hiện một xem bảng giờ.
Khi tôi tạo ra dự án này
thay vì nói rằng ứng dụng nhìn duy nhất tôi thực sự đi qua đây
ứ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
trên iPad với chế độ xem bảng bên trái và sau đó là nội dung bên phải.
Trên iPod hoặc iPhone này sẽ tương ứng với một xem bảng duy nhất.
Đó là nơi tôi có mã khởi động của tôi.
>> Trước tiên chúng ta có một cái nhìn ở kịch bản này.
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.
Thanh điều hướng này cho thấy ví dụ một tế bào có thể giống như,
và tôi có thể tăng gấp đôi nhấp vào, thay đổi tiêu đề.
Bất kỳ mối quan tâm giao diện người dùng khác có thể xử lý.
Các tập tin tiêu đề trông thật sự đơn giản.
Thay vì nói rằng đây là UIViewController Bây giờ chúng ta đang nói đây là một
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.
Tiếp theo, tôi muốn tạo ra một tài sản mà sẽ đại diện cho
những điều bên trong của bàn của tôi.
Bảng này sẽ tự ý hiển thị
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
trong đó tôi có thể chèn trái cây.
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
là tôi muốn làm cho chắc chắn tôi khởi tạo mảng này.
>> Tôi nói alloc init, tạo ra mảng trái cây của tôi,
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.
Và bây giờ tôi có một loạt các kích thước 4.
Chúng tôi đang lắc nó vào CS50.
Tôi đã có một loạt các kích thước 4.
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ế,
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.
Tôi không phải loại ra số phần trong một xem bảng.
Nó đã ở đó, và tôi điền vào chỗ trống.
Có bao nhiêu phần nào?
One. Tất cả đã hoàn tất.
Bao nhiêu hàng nào?
Vâng, tôi có một hàng cho mỗi trái cây, do đó, đếm này
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?
Đó là tôi có bao nhiêu hàng.
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ì?
Tôi sẽ nói dequeueReusableCellWithIdentifier.
>> Một lần nữa, điều này đã được viết cho tôi.
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
tế bào này tại địa điểm này.
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,
và lập luận này ở đây, lập luận này indexPath,
hàng tôi.
Nếu tôi nói indexPath.row đây
đâ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
những tế bào Tôi hiện đang hiển thị.
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
bên trong mảng trái cây của tôi và nhận được
các đối tượng tương ứng với mỗi hàng.
Nếu đây là một chuỗi, tôi bây giờ thiết lập
tài sản văn bản thành một chuỗi.
Tôi có thể làm một điều khác.
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,
vì vậy khi tôi tap mỗi của các tế bào này
didSelectRowAtIndexPath này, điều này sẽ được gọi là cho tôi,
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
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
để 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.
>> Một lần nữa, đây là một cái gì đó iOS đang làm cho tôi.
Hãy hiển thị một popup gây phiền nhiễu khác
mà chỉ đơn giản nói rằng bạn chọn một cái gì đó mà một điều gì đó
là có được các đối tượng hàng.
Khi tôi chạy, tôi sẽ phải xem bảng này tốt đẹp
có một hàng cho mỗi trái cây này, và nếu tôi khai thác 1
nó nói với tôi những gì đã xảy ra.
Có ý nghĩa?
Hãy xây dựng một chút phức tạp hơn của một ứng dụng,
càng nhiều như cách nhấp vào bạn chọn cà chua.
Phần tốt đẹp về viết kịch bản
là nó không chỉ sẽ giúp màn hình thiết kế chúng tôi cá nhân,
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,
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,
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
mỗi màn hình này trên nhiều kịch bản này,
và tôi có thể phóng to và thu nhỏ ứng dụng của tôi từ mức cao.
>> Để tạo ra một phần tử bên trong mới của kịch bản của tôi
nó thực sự đơn giản bên trong giao diện Builder.
Nếu tôi muốn thêm một màn hình này, ví dụ,
Lần đầu tiên tôi có thể thu nhỏ với zoom ít mà Apple yêu rất nhiều,
và xuống đây trước khi tôi tìm kiếm một nút
và tôi kéo và thả một nút
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ả
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,
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
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ỏ
và xem cách họ tương tác.
Đây sẽ không tương tác.
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ệ.
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,
Tôi muốn bạn để trượt qua màn hình mới này.
Điều đó có nghĩa là loại mối quan hệ giữa
màn hình đầu tiên và màn hình thứ hai.
Bạn sẽ có cơ bản một mũi tên từ nút đó để màn hình thứ hai
nói rằng khi bạn nhấn nút này đó là nơi tôi muốn đi.
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
chúng ta sẽ làm điều tương tự để xác định những segues.
>> 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
từ một màn hình khác iOS là tốt đẹp, đủ để gọi phương pháp này
gọi là prepareForSegue, và đây là nơi mà chúng ta có thể bắt đầu
gửi dữ liệu từ một ứng dụng khác.
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
để lọc các đội bóng chày của giải đấu và các bộ phận.
Khi tôi chọn một giải đấu, ví dụ, tôi muốn chuyển
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
trong đó các giải đấu hoặc tất cả các đội khác nhau.
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ị.
Để 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.
>> Cuối cùng, chỉ cần một điểm ngẫu nhiên trên iOS.
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,
mà thực sự là loại phức tạp để làm việc với.
Bạn cũng có thể sử dụng SQL để lưu trữ dữ liệu,
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,
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,
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.
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.
Đâ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
trong JSON, bạn có thể làm bên trong của một danh sách bất động sản,
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.
Ví dụ, tôi có Teams.plist mà tôi tạo ra.
Tôi tạo ra một tập tin plist mới, và tôi có thể đi sâu.
Đây là một từ điển, đây là một từ điển, đây là chuỗi,
và vì vậy đây là một đại diện đồ họa đẹp của một tài liệu JSON
hay chỉ là một tập hợp các cặp giá trị quan trọng,
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.
>> Hãy đầu tiên đến đây. Chúng tôi có các tập tin nhiều hơn bây giờ.
Nhưng trước tiên hãy đến đây để kịch bản này.
Các kịch bản ở đây nếu tôi có thể thu nhỏ
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.
Tôi đầu tiên sẽ bắt đầu trên màn hình này.
Tôi sẽ đi sâu vào màn hình này,
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
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,
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,
và nếu tôi đi qua để điều khiển xem này,
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
Tôi muốn bạn để trượt qua màn hình khác.
Tôi chỉ đơn giản là có thể giữ kiểm soát,
di chuyển trên một chút, giữ kiểm soát, kéo tế bào này và để cho đi.
>> 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ì?
Bạn có muốn sử dụng điều slide có đẩy được gọi là?
Bạn có muốn trượt từ dưới lên?
Đó gọi là phương thức.
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,
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.
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.
Tôi xác định trực quan bên trong giao diện Builder.
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.
Tôi gọi nó là showDivisions, và đây là để tôi có thể biết
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.
Đó 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.
Nếu đây là một nút, ví dụ, thay vì xem một bảng,
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,
và đó là làm thế nào tôi có thể làm chuyển hướng theo cách đó.
>> Thực sự nhanh chóng, nếu chúng ta đi vào các MasterViewController,
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ứ
sẽ được hiển thị trong xem bảng.
Ở đây tôi đang nói rằng tôi muốn bạn để có tập tin plist,
và tôi muốn bạn để tải nó lên thành một từ điển,
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.
Đây là số phần.
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
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.
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,
và đây là phương pháp đó là sẽ bị sa thải khi tôi nhấp vào
trên một trong những hàng và do đó kích hoạt quá trình chuyển đổi
tôi thiết lập với các mũi tên.
Điều này được nói rằng tôi có thể có nhiều
mối quan hệ từ một màn hình khác.
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
Tôi sẽ có 2 segues, 1 cho mỗi nút.
Nhưng prepareForSegue này, một lần nữa, sẽ được tái sử dụng
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
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.
>> Nhớ khi tôi cho rằng segue một tên này showDivisions,
đó là cách tôi biết rằng đây là segue đã được kích hoạt.
Tất cả những gì tôi muốn làm là tôi muốn nói
Tôi muốn tìm ra những gì tôi chỉ cần nhấn,
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,
nhớ indexPath chỉ nói mà tôi chỉ cần nhấp vào,
và sau đó tôi muốn nói rằng tôi muốn để tìm ra nơi tôi sẽ.
DestinationViewController này, đó là một tài sản của các segue.
Đó là màn hình tôi sẽ,
vì vậy tôi biết rằng các màn hình tôi sẽ được gọi là DivisionsViewController
bởi vì tôi tạo ra mà lớp học,
và vì vậy bây giờ nếu tôi nói d.divisions
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.
Đây là cách tôi đang gửi dữ liệu từ màn hình đến màn hình khác.
>> Chỉ cần nhìn vào DivisionsViewController này
bạn có thể thấy ở đây trong file h.
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,
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
các giải đấu mà tôi nhấp vào, và một lần nữa,
xem bảng thực tế trông khá nhiều như nhau, chỉ cần trả lời những
3 câu hỏi đơn giản cũng như xác định
điều gì sẽ xảy ra khi bạn chuyển đến màn hình kế tiếp.
Chỉ cần một vài thứ khác ở đây.
Bạn nhận thấy ở đầu trang ở đây là thay vì nói # bao gồm
Tôi bây giờ nói # import.
Đây chỉ là một điều Objective-C.
Nhập khẩu về cơ bản là một phiên bản đẹp hơn bao gồm,
và ví dụ, chúng ta cần phải biết những gì lớp này là,
vì vậy tôi không thể chỉ nói DivisionsViewController.
Nếu chúng ta không hashtag bên trong standardio.c tập tin c của chúng tôi.
trình biên dịch không có ý tưởng những gì printf là.
Tương tự như vậy, nếu tôi không nhập khẩu các DivisionsViewController
trình biên dịch thực sự không có ý tưởng những gì DivisionsViewController một.
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
H tập tin tương ứng. để trình biên dịch biết những gì đang xảy ra.
>> 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,
và do đó, một cái nhìn web là một đối tượng mà bạn có thể nhúng
một trình duyệt web nhỏ bên trong ứng dụng của bạn.
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,
vì vậy tôi muốn đi mlb.mlb.com,
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,
và như vậy bằng cách đi qua trong URL này
xem web có thể hiển thị cho tôi, và tôi có thể duyệt qua xung quanh,
và giả lập trong việc sử dụng đó.
Bây giờ điều này đến từ plist của tôi.
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ý
bằng cách xác định những segues.
Tôi bấm và một nhiều hơn,
và bây giờ ở đây là UIWebView của tôi, vì vậy chỉ cần như thế
đây là trang web cho URL mà tôi chỉ cần nhúng,
và tôi không phải để xử lý bất cứ điều gì điên.
Điều này là làm thế nào để hiển thị một trang web.
Những điều như thế này nút quay lại ở đây cũng được đưa ra với tôi
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.
>> Bất kỳ câu hỏi nào? Yeah.
[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í?
Chính xác, khi bạn gọi alloc và init, bạn không phải miễn phí.
IOS sẽ xử lý tất cả những điều đó cho bạn.
Thật là tuyệt vời, và bạn không vi phạm bất kỳ quy tắc. Yeah.
[Sinh viên] Nếu bạn để bao gồm các đội có thể phù hợp trên màn hình,
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?
Chính xác, nếu tôi có đội hơn, ví dụ, nó sẽ tự động sẽ xử lý
di chuyển cho tôi, và tất cả các mối quan tâm thực hiện
với bảng khổng lồ cũng được xử lý hoàn toàn cho tôi.
>> Các câu hỏi khác?
Tất cả các mã này sẽ được đăng.
Chúng tôi loại che đậy một chút của các chi tiết nhỏ hơn,
nhưng những thứ như thiết lập một số thuộc tính để xem web
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,
đó là thực sự, thực sự độc đáo đặt ra.
Họ có rất nhiều các ứng dụng mẫu và ví dụ tập quán
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ể.
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.
Đây là một số hướng dẫn tài liệu tiện dụng.
Các URL là lớn, vì vậy họ đang rút ngắn.
Một trong những đầu tiên là toàn bộ thư viện tài liệu.
Có ít thanh tìm kiếm, vì vậy nếu bạn bắt đầu nút đánh máy
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.
Tôi cũng bao gồm Bảng Lập trình Xem hướng dẫn.
Nó xử lý xem bảng chi tiết hơn,
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.
>> 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 đó,
và cuối cùng, cuối cùng là một Hướng dẫn giao diện con người,
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,
những thứ như không làm cho một nút đó là 4 điểm ảnh của 4 pixels.
Đó là một ý tưởng tồi, và những thứ khác mà Apple muốn bạn làm
khuyến khích thiết kế tốt.
>> Bất kỳ câu hỏi cuối cùng trước khi chúng tôi kết thúc?
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.
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 đó.
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
hoặc giúp đỡ tìm ra một số công cụ iOS ngẫu nhiên
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ì
chỉ trong sự quan tâm của thời gian, chúng tôi loại che đậy hơn
tốt hơn các chi tiết hạt của sự vật.
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ó
một làn sóng lớn của các ứng dụng trong App Store.
[CS50.TV]