TIANYU LIU : 이봐, 방법이야 그것은 모두가? 그리고 이것은 아이폰 OS 응용 프로그램입니다 객관적인 C 세미나의 프로그램. 그리고 내 이름은 티안 리우입니다. 나는, 지금 로웰 주니어 해요 컴퓨터 과학에 집중하고있다. 그래서이 세미나에 난 가는 너희들을 가르 칠 응용 프로그램을 만드는 방법에 대해 조금. 야호, 그것에 대한 흥분. 우리는 심지어 다이빙을 시작하기 전에 그래서 실제 프로그래밍 측면에, 에 대해 이야기 신속 정말하자 왜 iOS 앱을 구축 할 수 있습니다? 왜 아이폰 OS는 정말 대단입니까? 첫 번째 문제 그럼, 첫 번째 우리를 위해 꽤 굉장 일, 특히 CS50로 학생이 있다는 것입니다 아이폰 OS 목표 C. 잘 사용, 거기에 스위프트라는 새로운 언어, 그러나 우리는 안 갈거야 이 세미나에서 그를 사용합니다. 당신이, 스위프트에 관심이 있다면 그것에 대해 독립적 인 세미나입니다. 그러나 목표 C는 기본적으로 C. 의미의 수퍼 당신이 C에서 사용하는 모든 것을 할 수 목표 C로 번역 아주 쉽게. 나중에, 그 참으로 볼 수있는 바와 같이 아주 기본 구문은,있다 기본적으로 똑같은, C 및 목적 C. 그래서, 당신은 CS50 촬영 이후 이 최대까지 당신이 이미 적어도 40 %를 목표 C를 알고있다. 또한, 애플은 정말로있다 iOS 용 강력한 API. 정말 미친 많이 있습니다 일 당신은 그것으로 할 수 있습니다. 중 하나는 사람입니다 실제로 iOS 앱을 만들어 제어 자동차에 대한 어떤 꽤 재미있다. 아마 헬기가 더 흥미 롭군요. 하지만 그 방법을 강력 아이폰 OS API가 될 수 있습니다. 그리고로에게 당신은 할 수 있습니다 지금 알아, 스택 오버플로가 아마 중 하나입니다 가장 중요한 온라인 리소스 사용 가능한. 그리고 좋은 소식에 대한 모든 당신이 가능하게 할 수있는 하나의 문제 구축하는 동안 생각하여 목표 C에서 최종 프로젝트, 스택 오버 플로우 대답은 가능성이있다. 그냥 끝내. 이와 더불어, 아이폰 OS 정말 플랫폼 당신은 거대한에 도달 할 수있는 곳 약간의 노력과 관객. 그것은 안드로이드,처럼하지 모두의 예쁜 조각. 모든 아이폰 OS는 통합이다. 그리고만큼 당신이 만들 때 아이폰 앱, 당신이 할 수있는 아주 쉽게 포트 아이 패드에 그, 아이 패드 미니, 또는 다른 아이폰 크기. 이들은 모두 정말 편리합니다. 그리고 그것은 정말 좋은 친구를 감동합니다. 당신은 아이폰을 보유 할 수 있습니다 와, 헤이 당신의 친구에게 이것은 내가 만드는 응용 프로그램입니다. 당신은 어떤을 위해 그렇게 할 수 좋은 데스크톱 응용 프로그램. 자, 이제 실제로하자 언어 목표 C.에 그럼 왜 우리가 시작하지 않는 정말 기본 구문. 나는 목표 전에 언급 한 바와 같이 C는 C의 기본적으로 상위의 그래서 기본 구문 많이 있습니다 실제로 정확히 동일. 변수를 선언하고 두 개의 변수를 더해 우리는 마리오에했던 것처럼 정확하게이다. 여기에 새로운 아무것도 없습니다. 루프 마찬가지로, 숙박 인 및 조건도 동일하다. 당신은 당신과 단지 루프를 수행 할 수 있습니다 마리오 [들림]에서했던있다. 그리고 당신은 조건을 수행 할 수 있습니다 다만 무엇을 이전 페이지 세트에서 일을하고있다. 그러나, 목표 C , C 완전하지 않습니다 뭔가가 그 가지 이상한 그것에 대해입니다. 첫 번째 인 경우는 그 C 프로그래밍을하고, 일반적으로 전화 포함하고 라이브러리 이름. 그러나 목표 C에서 당신은 가져 오기를 호출합니다. 기본적으로 기능을 말하는 그냥 다른 이름. 그리고 문자열은 실제로 조금 이상한. 당신은 첫 번째 볼 수 있습니다 가지 이상한 것은 당신은 꽤 weird--을 가지고있다 sorry-- 당신은 꽤 이상한 NS가 여기에 서명합니다. 그리고 두 번째 것은 그 가지 이상한 당신은 전에 기호가된다 실제로 문자열을 선언. 그래서 기호의 기본적 의미 문자열이 문자열이 아니라입니다, 실제로 목적이다. 우리는 설명 할거야 나중에 그렇게하지 공포 당신이하지 않으면 그게 무슨 뜻인지 이해합니다. 그리고 콘솔에 인쇄가 조금입니다 다른 때문에 우리의 printf를 호출 C에서, 하지만 목표 C에서 우리는 [들림] 호출합니다. 당신은 그 무엇인지 궁금 할 것이다. 즉, printf와 기본적으로 단지 다른 언어. 정확히 동일한 사용, 동일한 기능. 음이 밝혀 목표 C 실제로 NS 거의 접두사가 모두, 모든 기본 데이터 타입, 는 NSDictionary, NSArray를,있는 NSString. 이유는 NS 인 것을 실제로 다음 단계를 의미합니다, 이는 회사입니다 스티브 잡스가 설립 한 회사는 어떤 곳 언어 목표 C가 탄생한다. 그래서 기본적으로 전통이다. 나는 조금 알고 이상한,하지만 애플입니다. 심지어 괴상하다 그래서 뭔가 보다 함수 선언이다. 이것은 우리 것과 매우 다르다 , C에서 볼 여기에 실제로 때문에 더 이상 C처럼 보이지 않는다. 당신은에 의해 이곳에가 무엇 이 글 머리없는 방법, 이는 음의 부호입니다. 당신은 마이너스 기호 괄호가 무효하고 함수 이름입니다. 그냥 경우 가정 해 봅시다 우리 다음, 안녕하세요 세계를 반환 형식은 무효가 될 것이다 우리는 아무 것도 반환하지 때문이다. 정말로 이상한 도착 당신이있을 때 것입니다 하나 이상의 파라미터를 갖는 같은 함수에 전달하는 다음과 같이 정말 이상한 것입니다. 우리는 방법 이름이, 호출 된 addInt [들림] 우리는 하나의 매개 변수를 전달하고 있습니다. 그러나 그 후, 우리는이 더 메소드 이름 호출. 그리고 가진 후 우리는 통과하고 두 번째 매개 변수. 이 사실은 조금 이상한 하지만이 모든 함수 선언 이 같은 패턴을 따른다. 우리는 시작하는 음의 부호를 가지고있다. 마이너스 기호 더하기 기호가 될 수 때때로 방법의 종류에 따라 그것은이다. 방법은 기본적으로 기능의 또 다른 이름. 그리고 우리는에 갈거야 설명 나중에 때 우리는 객체에 대해 얘기하고 지향 프로그래밍. 먼저 반환을 지정 내부 괄호를 입력 그 후 메소드 이름은 온다. 당신은 하나의 매개 변수를 전달하고 있습니다. 그리고 당신은 더 많은 매개 변수가있는 경우 당신은 메소드 이름을 확장 할 필요가 기본적으로 더 여기에 뭔가를 쓰기. 그것은 당신이 원하는 무엇이든 될 수 있습니다. 우리의 경우는 함께입니다. 그러나 당신이 말할 수 끝, 또는 또는 또는 당신이 원하는대로 ABC 풀 바,. 그리고 그 후 당신이있어 b 매개 변수를 전달합니다. 이것은 정말 이상한 컨벤션하지만 우리는 애플이 원하는 이유를 볼 것 매우 빠르게 그렇게 할 수 있습니다. 그렇다면 함수를 호출 할 수 있습니까? 목표에서 함수를 호출 C는 C. 다르다 사실, 호출 목표 C 함수 당신이 누군가에게 얘기처럼 더 많은입니다. 여기에서 우리는 자신을 가지고있는 객체라고합니다. 당신은 기본적으로 말하는 거 야 말 자체를 객체에 "Hello World!"를 즉, 함수를 호출하는 방법입니다. 객체와 메소드 이름 서로 조합. 그리고 이것은 어디 이상한 확장 방법 이름을 정말 놀이로 제공됩니다. 의 두 번째 예를 살펴 보자. 우리는 단지라는 방법을 정의 addInt와 어쩌구 저쩌구. 당신이 호출 할 때이 경우에 따라서 특정 [? 메시지?]는거야 자기 addInt과 같이합니다 : 10 : 2. 그것은 영어처럼 들린다. 기능이지만 함수 선언은, 이상한 목표 C 년대의 포인트 메소드 선언 패턴, 당신이 호출 할 때 점이다 함수 또는 메소드 그것은 실제 영어 같은 소리 것입니다. 그래서 그것은 매우 직관적 당신은 그것으로 일단. 특히이 경우, 여기서 당신은 기본적으로 수 함수 이름은 볼 일종의 자신을 문서화. 당신은 어떤 필요하지 않습니다 자세한 설명은 볼 수 정확히 무슨 일이 일어나고 있는지, 무엇을 정확히 하나의 매개 변수는 일. 그 넘어, 이제 조금 이야기 해 봅시다 객체 지향 프로그래밍에 대한 비트. 객체 지향 프로그래밍은 기본 프로그램 중 하나 인 기술이나 패턴 목표 C. 목표 C에서 사용 목표 C,하지라고 C, 정말 좋은 이유. 우리는에 도착하기 전에 그래서 목표 C 구문, 의 정말 빠르게 살펴 보자 정확히 무엇을하는 것을 목적으로한다. 우리는 아마 뭔가를 했어 이전과 같은 오브젝트있는 당신이 구조체라고 나무 또는 연결리스트를 구현 또는 [? 보십시오. ?] 그래서, 그것은이다 기본적으로 구조체 같은, 하지만 훨씬 더 강력보다도이다. 객체 메소드 및 속성이 있습니다. 방법은 기본적으로 함수입니다. 기본적으로하는 것이 기능 특정 객체에 대한 특정. 그리고 속성은 기본적으로 있습니다 필드는이 구조체에 지정합니다. 모든 단일 개체에 대한 그래서 우리는 몇 가지 속성이 있습니다 그 몇 가지 변수가있는 개체에 따라 다릅니다. 그리고 우리는 일부 기능이있는 또한 개체에 따라 다릅니다. 그리고 함수를 메서드 호출 그리고 변수는 속성이라고합니다. 그냥 멋진 이름입니다. 당신이 실제로있는 동안, 모든 단일보기 당신이 iOS 앱을 열 동안 당신은, 참조 , 그냥 트위터 나 페이스 북을 가정 해 봅시다 당신이 볼 때마다 하나의보기는 개체입니다. 심지어 전체 응용 프로그램입니다 객체와 함​​께 시작합니다. 매우 흥미로운 개념. 그리고 왜 우리가 객체를 원하십니까 프로그래밍을 지향? 그래서 당신이 상상할 수있는 때를 그 프로그램은 꽤 복잡해진다. 그냥 당신이있을 때 가정 해 봅시다 체스 판을 구현, 논리에 가고 정말 복잡. 당신은 36 가지가 조각, 그 그렇다면 당신 모든 로직을 작성하려면 체스 36 다른 조각, 즉, 많이 될 것 다른 함수와 변수. 그것은 많은 문제입니다. 그리고 아마 당신은 쓰기거야 다른 방법이나 다른 기능 행 조각마다 정확하게 무엇을 제어 할 수 있습니다. 당신이 경우에 그러나 객체 지향 프로그래밍,이 조각의 모든 로 추상화 할 수있다 하나의 객체입니다. 그리고 객체는 몇 가지 일반적인있을 것이다 조각의 종류와 같은 특성, 그것은 무엇입니까? 무슨 색입니까? 어떻게 이동할 수 있습니까? 그리고 그 방법으로는 크게이 그 로직을 단순화. 그래서 그냥 정말 좋은 방법 복잡한 프로그램을 만들기 위해, 계층 적 관계 프로그램 내에서, 매우 간단합니다. 우리는 보게 될 것으로 왜 매우 빠르게 때 우리가 실제로하고있는 우리가 실제로있을 때 programming-- S 코드를 일 나중에 프로그래밍 세션. 그런데 이와 더불어, 객체 지향 프로그래밍 재미 단지 많은입니다. 당신은 당신의 자신의 개체를 설계 할 수있어. 당신은 무엇을 설계 할 수있어 그것은 스스로 같아. 그것에 더 정답은 없습니다. 그리고 그것은 완전히 재미있다. 그래서 객체 지향 프로그래밍, 두 개의 기본 개념 클래스와 인스턴스를 될 것입니다. 클래스는 기본적 개체에 대한 템플릿입니다. 그리고 인스턴스는 기본적으로 하나의 특정 물체. 그냥 당신이 쿠키를 만들고있어 가정 해 봅시다. 이 경우, 매 실제로 끝낼 쿠키 객체가 될 것입니다. 그러나 쿠키 판은 당신이 빵을 사용 모든 쿠키 클래스가 될 것입니다. 클래스는 기본적으로 템플릿입니다. 그리고 인스턴스는 하나의 특정 될 것입니다 객체는 해당 클래스에서 만들었습니다. 그리고 인스턴스가 생성됩니다 클래스 선언에 기초하여, 로 우리는 나중에 슬라이드에서 볼 수 있습니다. 그래서 실제로 정말 해 보자 간단한 예제 [들림]. 의 우리가 선언하고 있다고 가정 해 봅시다 고양이에 대한 객체. 목적은 드 니스, 니가한다 고양이 클래스해야 일부 속성과 메서드를 가지고있다. 등록해야 어떤 종류의 클래스는 드 니스, 니가 고양이해야합니까? 예를 들어, 색상, 나이와 품종, 그 변수가 될 것이다 각 고양이에 따라 다릅니다. 그리고 그 몇 가지 있습니다 우리는 고양이를 설명하는 데 사용하는. 방법의 종류, 또는 고양이는 무엇을 할 수 있습니까? 빠른 예는 추적 될 것이다 마우스, 물고기를 먹거나 그냥 야옹. 이것은 정말 빠르다 고양이 클래스의 예. 그리고 정말 특정을 고양이 개체는 고양이가 될 수 우리는을 지정할 경우 색, 나이와 품종. 이 경우, 우리의 목적은 더 이상 클래스 더 이상 없습니다. 우리는 클래스에서 템플릿을 복사 우리는 각각의 특정 정보를 지정 특정 객체에 이 독립적 인 확인합니다. 그리고 당신이 호출 할 때 물체의 내부에있어서, 당신은, 개체에 야옹 전화 이는 방금 만든 고양이입니다. 아마 당신은 인쇄한다 "안녕하세요 같은! 야옹. " 꽤 귀엽다. 좋아,에게 그냥하자 몇 가지 세부 사항에 들어가 그리고 정확히 무엇을보고 아이폰 OS 프로그램 인로 번역합니다. 아이폰 OS는 모든 단일 프로그래밍 그래서에서 클래스는 두 개의 파일로 구현 될 것이다. 하나의 파일은 여기입니다 인터페이스라고합니다. 또 다른 파일은 여기입니다 구현이라고합니다. 일반적으로 인터페이스 extension.h을해야합니다 우리는 C 라이브러리에서 보았 듯이. 그리고 실행 파일입니다 extension.n을해야 할 것. 그것은 이상한 가지입니다. 그러나 더있다,이 .c 실제로 .N 의미 그 사이에 근본적인 차이 두. 이 경우 그래서, 우리는 우리가 걸 볼 수 있습니다 목적 : 인터페이스, 고양이를 선언. 즉 상속이라고합니다. 우리는 기본적으로 상속하고 객체 클래스에서 고양이 클래스입니다. 그래서 모든 재산 및 방법이었다 그 이전에 객체 클래스에 정의 자동으로 정의됩니다 고양이 클래스뿐만 아니라. 그 이외에, 우리는 컬러를 정의 품종, 나이, 세 개의 변수. 즉, 실제로처럼 보인다 당신이 전에했던 일. 이 구조체처럼 보인다. 즉, 기본적으로 구문입니다 구조체 선언, 그 완전히 올바른 것입니다. 그리고 내가 전에 언급 한 이후, 차이 구조체 및 객체 중 하나 근본적인 차이 객체 메소드를 가지고 있다는 것입니다 반면 구조체는 변수가 있습니다. 그래서 속성에 추가 또는 우리가 개체에 대해 만든 변수, 우리는 몇 가지 방법을 지정합니다. 그냥 우리가 여기에 있다고 가정 해 봅시다 하나는 야옹이다 두 가지 방법, 다른 하나는 추적 마우스입니다. 우리는 아마 전달되도록하려면 우리의 이전의 방법에 따라 파라미터 선언 패턴. 당신은 아마 마우스를 통과되고 싶어요. 그리고 당신은 아마 할 것 부울 명시를 돌아갑니다 당신의 고양이가 성공적으로있는 경우 마우스를 잡은 여부. 이 인터페이스이지만, 우리는 할 수 참조 실제로 인터페이스 아무것도하지 않습니다. 그냥 프로그램을 알려줍니다 exists-- 무엇 어떻게 고양이 클래스에 존재합니다. 그래서 위해서는 프로그램은 일을하고, 우리는 구현 파일이 필요합니다. 그래서 여기, 우리가 먼저입니다 분명히 우리는 인터페이스를 가져옵니다. 우리는 인터페이스를 가져온 후, 우리는 방법을 정의합니다. 그냥 여기 야옹 가정 해 봅시다 바로 인쇄 할 것이다 "안녕하세요!" 콘솔에. 그리고 구현 후 파일은, 우리는 거의 완료. 이것은 기본적 클래스 하나의 클래스에 대한 선언. 그래서 지금 문제는,이된다 당신은 어떻게 변수를 선언합니까? 방법 당신을 만들 클래스를 사용 목표 C에서 객체는 여기에 기록됩니다. 먼저 그 지정 이것은 고양이 포인터 목표 C의 모든 개체 때문에 마지막으로 포인터로 구현됩니다. 그리고 당신은 클래스를 호출, 그들에게 전화 기본적으로 malloc에​​있다 ALLOC, 등, 운영 체제를 말하는 당신을 이 오브젝트의 일부 메모리 공간이 필요합니다. 그 후에는 개체가 이미 당신은 그냥 초기화합니다. 이것은 단지 규칙입니다. 나는 조금 이상한 그것이 알고 있지만, 이 애플이 물건을 수행 실제로 방법이다. 속성을 할당하는 방법 실제로 꽤 간단합니다. 그것은 매우 유사 당신은 때 무슨 일을하는지 당신은 어떤 특정 할당하고 구조체의 내부 필드. 당신은 변수가 속성 이름을 이름, 과에 특정 값을 할당합니다. 그리고 메서드를 호출하면 매우 유사하다. 호출 방법은 기본적으로 내가 이야기 무엇 목표 C에서 어떤 방법을 호출하는 당신은에, 객체를 전달하고 이 경우 그것은, myCat 될 것 당신은 메소드 이름을 전달하고 있습니다. 당신이 개체에 얘기 것처럼, 당신이 야옹해야 myCat. 그것은 꽤 흥미 롭다. 그 후, 하나가 더 중요한 디자인 패턴 우리는 이야기 할 필요가 실제 S 코드에 도착하기 전에. 즉, 디자인 패턴이라고 이벤트는 프로그램을 구동. 이것은 또한 가장 아마 하나이다 아이폰 OS 프로그래밍의 기본적인 아이디어. 그래서 당신은 아마 정확히 몰라 이벤트 기반 프로그래밍입니다 하지만 그것은 정말 무서운 아니다. 그런데 사실, 당신은 이미 그 전에 다. 이것은 당신이 아마했습니다 라인 중 하나입니다 이미 지난 [들림]로 작성 CS50의, google.maps.event.addListener (마커, ) {}), 기능 ( "클릭":. 당신이이 줄을 호출하여 기본적으로 컴퓨터를 말하고 이벤트를 호출 할 때마다 그 마커에서 발생 "클릭" 해당 기능을 사용합니다. 이것은 매우 다르다 당신은 mario.c에서하는 일. mario.c에서 당신은 프로그램을 실행 한 번, 그것은 당신에게 출력을 제공, 하면됩니다. 이러한 일종의처럼 한방 프로그램. 이벤트 구동 프로그램 매우, 매우 다릅니다. 페이스 북이 하나 인 경우의 상상하자 총 프로그램은 정말 좋지 않다. 당신은 페이스 북으로 이동 한 번 그것은 이루어집니다. 그것은 당신에게 약간의 출력을 제공 당신은 다시 없었어. 당신은 더 아무것도 없었어. 그래서 여기에, 특히 우리가 사용하는 패턴은 이벤트가되도록, 구동 모든 작동합니다 에 따라 잡힐 것을 이벤트가 발생했습니다. 예를 들어, 우리가있는 경우 버튼을 우리는 지정 그 버튼을 클릭 할 때마다 그, 라는 함수를 호출에 "Hello World!"를 그런 식으로 우리가 정말 할 수 함수 로직 관리 매우 유연한 방식으로 흐른다. 사용자는 수행 또는 함수를 호출 할 수 있습니다 그 이미 호출 된. 그것은 완전히 사용자가 무엇을 기반으로. 그래서 우리는이 것을 볼 수 있습니다 mario.c보다 실제로 훨씬 더. 그리고 좋은 소식은 점입니다 실제로이 아닌 새로운 개념. 너희들은 이미 수행 한 있음은 마지막 문제에서 설정합니다. 그래서 목표 C에있다 세 가지 다른 다이어그램 이벤트 기반 프로그래밍. 먼저도이다 목표 행동이라고, 어디 버튼을 결합 일부 기능 키를 누릅니다. 당신이 클릭 할 때마다 그냥 말합시다 어떤 버튼을, 당신은 몇 가지 함수를 호출합니다. 이것은 매우 간단한 목표 작업입니다. 두 번째는 실제로 가장 어려운 하나, 그것은 프로토콜에 위임라고. 우리는 설명 할거야 훌륭한 세부 사항에 나중에. 그리고 세 번째 방법은 알림입니다. 이것은 실제로 아니다 매우 중요한까지 우리는 우려로, 기회 때문에 당신은 통지를 사용하는 거라고 최종 프로젝트에 매우 낮다. 그래서 우리는 그 부분을 건너 뛸 것입니다. 그리고 우리는 다이빙을거야 프로토콜에 위임에. 그래서 정확히 프로토콜은 무엇인가? 아니면 대표단은 정확히 무엇인가? 이제 시작하는 프로토콜에 대해 얘기하자. 프로토콜 이벤트에 지나지 않습니다. 그러나 이러한 이벤트가 주어집니다 애플 당신과 함께 시작합니다. 예를 들어, 내가 아니에요 당신의 얼마나 많은 완전히 확인 사람들은 애플의 원본을 사용 앱 메일 또는 연락처, 하지만 때마다 당신은 스크롤 테이블과 특정 셀을 누릅니다 테이블에, 그 이벤트입니다. 그리고 당신은 수행하려는 경우 스스로 그 사건, 실제로는 조금 어렵다. 그래서 애플은 심지어 당신에게 주신 당신이 직접 사용할 수 있도록 이벤트는 자신의 일을 할 수 있습니다. 프로토콜은 실제로 정말, 정말 널리 사용 의 목표 다 음에 사실, 모든 하나의 응용 프로그램 뭔가 잡은 애플 대리자가 있습니다. 섬세한 내부의 모든 것 응용 프로그램을로드하기위한 프로토콜. 그냥이 있다고 가정 해 봅시다 응용 프로그램에 대한 이벤트는 부하를했다. 당신이 한 후에 그래서 어떤 일이 일어날해야 응용 프로그램 작성, 당신은 응용 프로그램을 연 후, 후에는 후 응용 프로그램을 닫거나 당신은 잠에 아이폰을 넣어. 이들은이 모든 이벤트입니다 이미 당신에게 주어졌다. 그리고 원래이 입자 내부 더 구현이 없을 것이다. 애플은이 기능이 있음을 이야기 어떤 이벤트가 발생했을 때 일어날 것입니다, 하지만 당신은 그와 함께 무엇을 기능은 전적으로 귀하이다. 대표단은 기본적으로 클래스를 말하는 이러한 프로토콜을 처리해야한다고. 그것은 약간의 혼란,하지만 것입니다 우리가 할 때보다 명확 행동의 코드. 프로토콜에 위임 사실이다 의미에서 매우 강력한 메커니즘 그 우리는 위임을 할 경우 특정 클래스에, 우리는 본질적으로 처리 할 수​​ 있습니다 모든 종류의 이벤트 우리가 어떤 클래스를 사용하여, 매우 편리한 도구입니다. 그래서 하나의 빠른 예를 들어 프로토콜에 위임 난 그냥 무슨 얘기를 할 것이다. 이 프로토콜은 특별히라고 의 TableView는 [들림] 역할을 선택 [에? 인덱스?] [? 과거. ?] 지금이 적발 될 경우 때를 실제로 특정에 눌러 당신의 TableView에있는 셀 그냥 메일에 가정 해 봅시다 또는 연락처 응용 프로그램에서. 함수 내부 있었다 원래 아무것도하지. 이 기능은하지 않습니다 기본적으로 아무것도 할. 하지만 지정할 수 있습니다 함수가 무엇을하는지, 앱에서 원하는 것을 제공. 매우 편리한 도구입니다. 그리고 모두와 그 나는 기본적으로 말했다되고 아주 기본적인 구문을 커버 목표 C에 대한 기본 개념 프로그래밍, 우리는 약간의 코드를 수행 할 수 있습니다. 훨씬 더 흥미 진진한. 그래서의 코드는 사실이다 조금 압도적 당신은 처음으로 열 때. 한 퀵 메모, 그래서 경우 아이폰 OS 개발을하고 싶은, 내가보기 엔 당신이 Mac을 사용하는 것이 좋습니다. 에 아이폰 OS 개발을하고 있기 때문에 윈도우 정말 힘들 것입니다. 그것은 해 드리겠습니다,하지만 정말 어렵다. 그리고 당신은 확실히 할 g 편집을 사용하지. 그래서의 코드에서 우리는이 여러 지역. 처음의 열 코드 당신은 탐색 영역을 볼 것이다, 이는 기본적으로 모든 보여줍니다 현재 프로젝트에 파일을 저장합니다. 당신은 도구 모음 영역을 가지고있는 기본적으로 뷰를 관리하고, 또는 일부 작은 빠른 의 코드 자체에 대한 도구를 제공합니다. 그리고 이것은 실제 편집기 영역이다. 이 지역은 매우 유사 g 편집이다, g 편집보다하지만 훨씬 더. 그리고이 오른쪽 영역에서, 유틸리티 영역이라고합니다. 이 지역은 때 정말 편리하게 당신은 인터페이스를 만들거나 지정하고 귀하의 응용 프로그램에 대한 몇 가지 빠른 설정. 최종 영역 디버깅이다. 이 영역은 콘솔이 포함되어 있습니다. 그래서 당신은 printf의 말을 할 때마다, 또는, 우리의 경우 nslog 모든 결과는 갈은 여기에 인쇄 할 수 있습니다. 좋아? 나는 우리가 정말 빨리 할 수​​있는 것 같아요 아이폰 OS 프로그래밍을위한 예. 그리고 이제 실제로 최대의 코드를 열 수 있습니다. 그래서 당신이의 코드를 열 때마다, 그것은이다 그런 식으로 뭔가를 보여 드릴 거예요. 그것은 당신에게 것 당신은 무엇을 하시겠습니까? 당신이 뭔가를 시작 하시겠습니까 기본적으로 무작위, 놀이터, 당신 다만없이 코드를 테스트 할 수 있습니다 실제로 응용 프로그램에 투입. 새 프로젝트를 만들시겠습니까? 아니면 계속 하시겠습니까 기존 프로젝트를 작업? 우리의 경우 우리는거야 새 프로젝트를 만듭니다. 그래서, 정말 좋네요이다 코드는 실제로 이미이 일부 템플릿 당신에게 주어진 객체를 생성합니다. 당신이 게임을하고 싶은 경우, 코드를이야 실제로 당신을 위해 게임 템플릿을 가지고, 페이지 기반 응용 프로그램을 가지고 탭 기반 응용 프로그램. 이 경우, 우리는거야 아주 간단한 일을하기 위해, 그리고 우리는을 사용하는거야 단일보기 응용 프로그램입니다. 그 후 당신이 전화하고 싶은 당신의 제품, 그리고, 당신의 이름을 무엇 무엇 식별자, 그리고 당신은 어떤 언어를 사용합니까. 여기에서 우리는하고 싶지 않아 코어 데이터를 사용하여 확인합니다. 코어 데이터는 기본적으로 데이터베이스 화 아이폰 OS이다. 당신이 코어 데이터 할 경우에요 코드를 정의하는 것입니다 당신을 위해 많은 더 복잡 클래스. 그래서 우리는있어, 간단한 모든 것을 유지 다만 코어 데이터없이 할 것 지금. 우리가 될거야 문제 사용하는 것은 문제 ... 그 얘기입니다 우리는 생성 될거야 우리가 기본적으로 C에서 마리오를 가져올 iOS 앱에. 그럼 마리오 아이폰 OS 것을 호출 할 수 있습니다. 물론 당신은 당신이 무엇을 지정 프로젝트에 넣을. 그리고 거기에서 우리는 간다. 그래서이 조금이다 압도적 그러나 이것은 실제로 우리는 슬라이드에 보았다. 그리고 첫 번째 영역은 우리가 지금보고 기본적으로 프로젝트 구성입니다. 그래서 모든 것을 당신이하고 싶은 프로젝트, 장치의 종류, 그냥 가정 해 봅시다 장치의 종류 앱에 표시 할합니까? 그것은 아이폰, 아이 패드 또는 보편적인가? 장치 방향이 모든 물건 그래서. 매우 중요하지 않음, 하지만, 그러나이 수 사용자가 설정하는 곳입니다 프로젝트 당신이 경우 실제로 애플 스토어에 배포 할. 좋아,이 살펴 보자 우리의 코드 안에 뭔가. 의 파일 탐색기를 통해 가자. 이들 모든 파일은 이미 아주 좋은 템플릿과 함께. 그래서 우리는 그들 중 하나를 클릭하면 이는 모습이다. g 편집 매우 유사. 하지만 당신은 것을 볼 수 있습니다 구문 강조는 아마 조금 좋네요. 그리고 실제로는 훨씬 더 많은 것은 인 g 편집보다 강력한. 그리고 당신은 자동으로 완료 할 수 있습니다 당신을 위해 많은 것들을, 우리는 매우 신속하게 볼 수있다. 의뿐만 아니라 디버깅 영역을 열어 보자. 좋아, 우리가 볼 수있는 바와 같이, 콘솔 바로 여기에있다. 이것은 당신이 어디에 보게 될 것입니다 당신의 printf 또는 뭔가를 nsloging에있어. 그럼 전 물러 가고, 실제로하자 응용 프로그램을 컴파일하고 무슨 일이 일어 나는지. 하나의 필수 기능에 대한 S 코드, 즉 S 코드 아이폰 시뮬레이터와 함께 제공됩니다. 그래서 당신이 할 필요가 없습니다 아이폰 프로젝트를 시도 의 코드에 대한 그 시뮬레이션 할 수 있습니다 당신은,로 우리가 지금 볼 수 있습니다. 그것은 꽤 좋다. 그것은 조금 복용 시간의 비트 컴파일 기본적으로 우리는이 빈 응용 프로그램, 이는 실제로 아무것도하지 않는다. 그러나 컴파일합니다. 그것은 꽤 굉장합니다. 그것은 허, C보다 훨씬 낫다? 좋아, 다음하자 무언가를 추가하려고합니다. 약간의 비트가 하나의 파일 여기에 이​​상한은 스토리 보드라고합니다. 이 사실은 중대하다 의 코드에 대한 멋진 기능입니다. 때문에의 코드에서, 당신은 드래그 실제로 수 및 인터페이스에 요소를 드롭 그것은 바로 표시됩니다. 의 그 해보자. 우리는 여기에 "Hello World!"레이블을 드롭 우리는 위치를 지정할 수 있습니다. 꽤 멋진. 이제이 정지 시뮬레이션을 실행 할 수 있습니다. 여기에서 우리는에 "Hello World!"가 우리는 아직 코딩을하지 않았다. 도대체 무슨 일? 이 얼마나 강력한입니다 인터페이스 빌더가 될 수 있습니다. 누군가도했다 당신이 할 수있는 아마 작성하지 않고 응용 프로그램을 완료 코드의 아마 천 라인 단지 인터페이스 빌더를 사용하여. 그러나 그것은 아마 아니다 가장 좋은 방법은 그것을 할 수 있습니다. 이제 실제로 코딩에 내려 보자. 파일 구조 그래서 실제로 정말 재미있다 때문에 당신이 볼 수 있으므로,이 어디에도 주요 기능은 없다. 참조? 우리가 전에 언급 한 바와 같이, 당신은이 있음을 알 수있다 실행 파일은 특정 클래스. 하지만 주요 어디서나은 없습니다. 어디 주요 무엇입니까? 사실,이 메인이지만, 주요 실제로 당신에게서 숨겨져 있습니다. 메인은 ​​여기에있다. 즉 익숙한 보인다. 그래서 기본적으로 어떤 아이폰 OS 주 안에하고있다 주요 될 때마다 것입니다 기본적으로, 이는 호출 응용 프로그램은, 그것을 실행 할 때마다 AppDelegate에라는 개체를 만듭니다. I는 전술 한 바와 같이, 전체 응용 프로그램은 실제로 그 자체로 객체입니다. 기본적으로,이 방법에 따라서 iOS 앱 컴파일러를 말하고있다 그 확인, 내가 만들거야 AppDelegate에라는 제품, 그것은 내 응용 프로그램이 될 것입니다. 그래서 당신이 갈 필요가 그 AppDelegate에 통해 그 사람이 무엇을하고 있는지를 참조하십시오. 내 직업은 나를 위해 수행됩니다. 그리고 AppDelegate에 당신은 그것을 볼 수 있습니다 정말 이상한 함수가 있습니다, 물론 실제로 방법, 그 애플은 이미 당신을 부여하고있다. 다음은 무엇입니까? 이러한 사실은 그냥 프로토콜입니다 제가 얘기했다. 그래서 이러한 이벤트는 애플 시작하는 당신을 부여하고있다. 아무것도 일부가 없습니다 지금 기능, 그러나 우리는 초기화 할 경우 우리의 응용 프로그램에 대해 뭔가 표시에 들어가기 전에 모든보기, 우리는 여기에 그렇게. 당신은 이름을 읽을 수와 같아요 이벤트는 실제로 정말 분명하다. 그래서 지금 주요 만들었습니다 AppDelegate에 대한 객체. 그리고 AppDelegate에 어떻게해야 무슨 일 실제로 또한 숨겨져있다. AppDelegate에 시작하는 것입니다 의 ViewController 주식을로드. 그래서 기본적으로 시작할 것 당신이 가진 모든보기를로드 그냥보기 렌더링 계층 구조를 기반으로. 그래서이 경우 우리는이 여기에 하나의보기. 그래서보기 만입니다 즉, 호출 할 것입니다. 의 ViewController 논리가 바로 여기에있다. 이것은 실제로 코드 우리가 방금 본보기를 제어합니다. 좋아, 여기에 뭔가를 할 수 있습니다. 그래서 viewDidLoad에 이벤트 같은 소리, 이 경우도 위양 사실 이것은 또한 프로토콜이다. 그래서 뷰​​는로드 어떤 함수 내에서 모든 호출됩니다. 이 경우 우리는 안녕 "을 참조한다 천우는! "우리는 프로그램을 실행합니다. 그것은 조금 느린지고있어 스토리 보드 파일을 컴파일. 그런데 참으로, 우리는 그것을 위해 출력을 볼 수 없습니다. 그것은 꽤 멋지다. 이제 실제로 마리오를 할 수 있습니다. 나는를 정의하는거야 매우 빠르게 작동합니다. marioWithLevels : (INT) 수준의 결과. 좋아,이 사실은 굉장 의 코드 자동 완성의 기능입니다. 그래서 당신이 작성하고 입력 입력 할 때, 이미 템플릿을 포기했다 당신을 위해, 어떤 꽤 멋지다. 정말 찾아야한다 너희들에게 익숙한. 죄송합니다, 내 잘못이야. 좋아, 좋아. 그 논리는 정말 익숙 할 것이다 너희들, 특히 단지 마리오. 그러나 우리는 지금에 인쇄됩니다 콘솔 매번, 우리는 어떻게 든 유지하기를 원하기 때문에 우리가 인쇄하는 것을 추적. 우리는을 사용하는거야 나중에 어떻게 든 결과, 인쇄를 표시합니다 밖으로 사용자에게 발생합니다. 그래서 그 대신 우리는 그저 모든 nslogging, 이는 우리가 모든 것을 저장하고 함수 호출 결과로, 하지만 논리 정확히 동일하다. 우리는, 우리를 마친 후 우리의 결과를 인쇄 할 수 있습니다. 그리고 여기에 대신 밖으로 인쇄 내 이름, 우리는 함수를 호출하는 것입니다. 이제 어떻게되는지 보자. 아차, 분명히. 우리는 좋은 있나요 여기에서 밖으로 작은 피라미드. 이것은 기본적으로 C, 우리가있어 단지 당신이 함수를 호출 할 경우 조작 어떻게 같은 기능 보여요. 다른 것은 아무 것도 없습니다. 그러나 이것은 실제로 하지 매우 흥미로운 여기에, 우리가 표시되지 않는 때문에 아이폰 앱에서 아무것도. 그래서 당신은 실제로 app-- 아이폰이있는 경우 실제로 마리오 아이폰 OS 권리가있는 경우 지금, 당신은하지 않을거야 아무것도 볼 것을 때문에 마리오와 아무이 콘솔에 모든 출력 사용자로부터 숨겨져 있습니다. 이것은 당신이 볼 것입니다 이는 "안녕하세요!"입니다 좋은하지 않습니다. 이제 사용자가 볼 수 있도록 해보자 정확히 우리가 밖으로 인쇄하는. 그래서 우리는 더 이상 레이블 할 필요가 없습니다. 의 시도하자 뭔가를 알아낼 다른 사람이 유용 할 수 있습니다. 실제로 하나 있습니다 라고 요소 텍스트 필드, 수 우리에게 매우 도움이 될. 그것은 기본적으로 영역을 표시합니다 텍스트를 편집 할 수 있습니다. 그래서 정말 도움이 보인다. 이제 드래그와 드롭 할 수 있습니다. 와우, 우리는 텍스트보기가 우리의 관점에서, 정말 멋진. 그건 좀 너무 크다. 이제 더 작게 만들어 보자. 센터로 넣어. 뿐만 아니라이 작은합니다. 이제 우리는 우리가 할 수 텍스트보기가 최종 결과를 표시하는 데 사용된다. 하지만 지금은 그것입니다 확실히 작동하지 않을 그게 ...이 있기 때문에 의 ViewController 우리 단지 알고하지 않습니다 정의 거기 텍스트보기가있다. 그래서 우리는 어떻게 든를 필요 텍스트 뷰를 연결 우리 단지 클래스를 사용하여 만든 그 이미 우리와 함께왔다. 우리가 그렇게 할 방법은 실제로 정말 마법. 그래서 스토리 보드를 엽니 다. 이 특별한 [들림] [라고? 조수?] [들림]. 당신이 그것을 클릭하면, 그건 두 파일을 열 예정. 하나는 클래스와 다른 하나이다 이에 대한 대응이다. 그것은 매우, 매우 도움이됩니다. 그리고 그냥 .H 파일을 통해 이동하자. 컨트롤이 [들리지] 논리입니다. 를 눌러 제어 및 드래그 선언에 텍스트보기. 우리는 outputView를 호출하는 것입니다. 연결합니다. 그래서 여기에 우리는 새로운를 선언 한 우리의 ViewController 클래스의 속성. 그리고 새 속성 그냥 텍스트 뷰입니다 우리는 인터페이스 건물에 만들었습니다. 그런 식으로 우리가 할 수 그래서 액세스 모든 데이터 내부에 모든 것을 조작 굉장 출력보기. 우리의 실제 코드에 따라서 의 그것으로 뭔가를 할 수 있습니다. 그래서이 시간 우리는 인쇄 같은 경우 최종 결과 밖으로 마리오를 들어, 우리는 아무것도하지 아니함에있어. 나는 우리가 지킬 수 의미 로깅 문. 그 외에도 판독을 보내 우리 단지 출력보기에 만든 우리가 방금 만든 텍스트 뷰 UI입니다. 이제 어떻게되는지 보자. 와우. 우리는 지금 응용 프로그램에 피라미드가있다. 사용자는 우리의 출력 때문에 볼 수 있도록 우리는 우리의 코드의 출력을 복사 한 우리의 인터페이스. 그것은 꽤 좋다. 실제로이 아니다 흥미로운 우리가하고 있는데 ... 때문에 모든 응용 프로그램입니다하고있다 당신에게 피라미드를 보여주는, 그리고 당신이 그것에 대해 할 수있는 일은 없다. 그것은 특히 흥미로운 아니다. 그래서 지금의이 버튼을 만들어 보자 그의 의견을 취소합니다. 버튼이 도움이 될 것으로 보인다. 드래그 앤 드롭. 버튼 하나. 버튼 두. 그래서 우리는 왼쪽을 클릭하면 버튼,보기 지워야합니다. 화면에 아무 것도 없어야합니다. 그리고 우리가를 클릭하면 오른쪽 버튼, 마리오, 보기는 다시 나타나지 것입니다. 이러한 방식 또한 수행 마법의 물건, 제어 및 드래그 클래스 선언 조수 director--에 보조 뷰어. 이 경우 우리가 지정하는 것을 그 행동해야한다. clearMario. 그래서 여기에 우리는 이미 만든 clearMario라는 액션, 이는 호출됩니다 방법입니다 우리는 버튼을 누를 때마다 맑은. 우리의 실제 코드 그래서, 그냥하자 출력 텍스트 및 출력보기 넣어 아무것도에, 그 방법 그것은 명확하게 나타납니다. 그 외에도,의는 만들 수 있습니다 runMario라는 또 다른 방법. 아 죄송합니다, 그 속성 안된다. 좋아,해야 뿐만 아니라 동작합니다. 그리고 그 기능은 때 라고, 우리는 마리오 열을 실행합니다. 다행스럽게도 잘 될 것입니다. 그것은 컴파일합니까? 예. 이제 우리는 볼 수 있습니다. 우리는 출력을 가지고있다. 그리고 그냥 어떻게되는지 보자. 즉 사라 졌어요. 그것은 다시 돌아왔다. 그래서 여기에 우리가 지정한 함수의 종류 때 호출 될 우리는 뭔가를 입력, 우리는 특정 버튼을 누르면. 이것은 기본적이며 대상 동작 방식 이벤트 구동 목표 C에서 프로그래밍 이와 더불어, 그것은 흥분되지는 우리가 정말 변경할 수 없기 때문에 피라미드가 얼마나 높은 것입니다, 그래서 우리는 아마 어떻게 든를 원하는 사용자로부터 입력을받을 과의 높이를 변경 피라미드는 무엇 출력을 기반으로. 그래서 우리는 그렇게 할 것입니다. 그래서 우리는 runMario를 부르는 시간, 우리는 단지 마리오 직접 호출하지 않습니다. 이 하나의 제목입니다. 위임. 이것은 매우 흥미로운 일이다. 대리인은 무엇입니까? 나는 여기에 자신을 넣어 갈거야. 그리고 우리는 보게 될 것입니다 그 무엇 나중에 의미한다. 그래서 여기에 우리가 기본적으로 생성 한 특정 인스턴스는 UI 경고라고 보기. UI 경고도이다 기본적으로 당신은 무엇을 것입니다 때마다 뭔가 팝을 참조 입력을 요청 최대, 당신이 시도 할 때 어떤 일이 일어날 것 같은 앱 스토어에 뭔가를 구입. 그 외에도 후 를 작성, 우리는 경고를 표시합니다. 좋아, 그냥 빨리하자 시험은 직장이나하지 않습니다. 즉, 아주 멋진입니다. 이제 사실을 만들 수 있습니다 UI의 경고에 ​​대한 입력 필드. 이것은 우리가 그 방법을 알 수있다. 그리고 우리는이 있어야합니다 경고에 대한 입력보기. 아주 멋진. 그냥 10를 가정 해 봅시다. 그것은 바로 아무것도 아니에요 이제 전화 통화가 실제로 때문에 마리오를 실행하기위한 변경되지 않았습니다. 그래서이 조금되고있다 조금 이상한 때마다 때문에 우리는 할 때마다 우리를 아래로 버튼을 눌러 경고보기에서 버튼을 누르면, 뭔가, 발생해야 하지만 발생하지 않습니다. 우리는 어떻게 잡을 수 있습니까? 어떻게 우리는 사용자가 알고 경고보기를 기각했다 및 이미 때문에, 숫자 입력 지금 실제로 아무 일도 있어요. 글쎄, 당신은 이미 예상 했겠지만 그것은 바로, 위임. 그래서 모든 이외에 이러한 선언, 우리는 새로운 위임을 추가 할 필요가 그것은 UI 경고보기 대리자를했다. 하나 하나 그 그래서 상호 작용 또는 이벤트 우리는이 거라고 UI 경고보기 처리 될 것입니다 뿐만 아니라 우리의 클래스로. 그래서 이외에 것 인덱스에 경고보기를 클릭 버튼을 누릅니다. 이 도달된다. 우리가이 경우에 따라서 already-- 그래서 우리는이 프로토콜을 발견 때 이벤트를 처리 할 우리는 완료 버튼을 클릭합니다 경고보기에. 그래서 때마다 우리는 기각 경고보기, 이런 일이 발생한다. 나를 그냥 매우 빠르게 테스트 할 수 있습니다. 그런데 참으로, 우리는 여기에 도달했습니다. 그래서 여기, 우리는하지 않습니다 실제로 실제로 얻을 그래서 우리가 얻고 싶은 엥 얻을 이전에 우리가 가지고있는 텍스트 경고보기에 들어갔다. 및 텍스트에 기초하여, 우리는 야 마리오를 표시 할 것. 이것은 매우 신속하게 밝혀 실제로 작동 여부를 경우. 이 경우에 그래서, 우리 입력하는 경우, 우리가 10을 볼 수, 10,의 말을하자. 아주 좋은, 우리는 여기에 숫자를하지 않아도됩니다. 그것은 꽤 좋다. 이제 마지막 단계는 그래서 나중에 ...합니다 마지막 단계는 우리가 지금해야 단지와 마리오를 호출한다 레벨 입력에 기초 것을 우리는 경고보기에 뒀다. 그래서 우리는 변환 할 필요가 아이폰 OS에이 문자열. 정적 오버 플로우가 매우 굉장하다. 그리고 우리는 자기 전화 marioWithLevels 값입니다. 의는 것을 보자 실제로 작동 여부. 우리는 이미 피라미드를 제공하고 있습니다. 의는 높이를 변경 해보자. 즉 실제로 작동합니다. 그것은 꽤 멋지다. 즉, 지금 당신이 할 수있는, 그래서 그냥 입력 원하는 값입니다. 그냥 네 가지를 가정 해 봅시다. 그건 정말 기. 그래서 이것은 기본적으로 정말 간단한 예제 용의 코드에서 프로젝트를 생성하는 방법 정말 빠르게 배선하는 방법 정말 간단한 이벤트 및 기능. 그래서 소스는 것입니다 나중에 온라인으로 넣어합니다. 당신이 관심이 있다면 그래서 아이폰 OS 마리오의 작동 방식에, 나는 정확히 같은 넣어 갈거야 나중에 CS50의 웹 사이트에 프로젝트. 우리는 기본적으로 완료 여름, 우리는 마무리하기 전에 난 단지에 너희들을 지적하고 싶어요 정말 굉장한 자원이 온라인으로 사용할 수 있습니다. 물론 애플 문서 매우 도움이 될 것입니다. 그러나 그 이외에, 특히 I 네 개의 소스 코드 학교를 추천합니다 나무 위의 집, AppCoda과 WWDC 동영상. 코드 학교 및 나무 위의 집은 두 개의 온라인 교육시키기 웹 사이트, 이는 특히 초점 소프트웨어 공학에. 특히 코드 학교, 그들은 아이폰 OS에 정말 좋은 자습서를 가지고있다. 즉,에 대한 정말 빠른 예입니다. 그들은 실제로 정말 cute--를 만들 그 작은 귀여운 아이폰을보고 저기 야, 그것은 아주 끝내. 그리고 방법은 그들이 목표 설명 C 구문은 완벽 분명하다. 트리 하우스는 동일합니다. 그리고 AppCoda는 포럼입니다. 실제로 실행 된 블로그의 정말 경험이 목표 C로 프로그래머. 그리고 AppCoda의 모든 튜토리얼은 꽤 짧고 쉽게 구현할 수, 매우 좋습니다. 그리고 개발자 인 경우, 확실히 확인 이동 어떻게 WWDC 동영상을 어디에 당신이 할 수있는 최신 아이폰 OS 프로그래밍을 배우는 기술, API 및 라이브러리. 그래서 꽤 많이 세미나 그것. 정말 감사합니다. 그리고 난 당신이 재미를 바랍니다 자신의 iOS 앱을 만드는.