본문 바로가기

아이폰 개발186

iOS NSStream 이용한 채팅앱 예제 iOS NSStream 이용한 채팅앱 예제 ✅ iOS 네이티브 소스 SocketSessionViewController.h #import @interface SocketSessionViewController : UIViewController @end SocketSessionViewController.m #import "SocketSessionViewController.h" @interface SocketSessionViewController () //텍스트 필드 @property (weak, nonatomic) IBOutlet UITextField *idTextField; @property (weak, nonatomic) IBOutlet UIView *sessionView; @property (strong.. 2021. 3. 17.
[스탠포드]Swift 강좌 - MVC 패턴 [스탠포드]Swift 강좌 - MVC 패턴 @정의 1.Model : 앱이 무엇이냐? 무엇에 대한 집합. UI 와 독립되어 있다. 2.Controller : 어떻게 화면에 표시할 것인지에 대해 관심을 가진다. 3.View : 버튼, 라벨 등 UI에 관련된 객체들. Controller 의 통제를 받는다. @서로의 관계 1.모델과 컨트롤러 : 컨트롤러는 모델에 접근할 수 있다. 하지만 모델은 Notification & KVO 방식을 통해 모델의 변화를 컨트롤러에게 알릴 수 있다. 2.모델과 뷰 : 모델은 UI에 독립적이며 View와 소통할 수 없다. 3.뷰와 컨트롤러 : 컨트롤러는 View에 대해서 outlet을 이용해서 View에게 직접 접근할 수 있다. 뷰는 target - Action 구조로 사용자의 행.. 2021. 3. 9.
[스탠포드]Swift 강좌 - ios 구조 [스탠포드]Swift 강좌 - ios 구조 ios는 4개의 계층으로 구성되어 있다. 4계층 : Cocoa Touch(UIKit) : UI를 담당하는 부분. 버튼, 텍스트필드 등. Alerts, Core Motion, WebView, View Hierarchy, Map Kit, Image Picker, Controls, Camera, Multi-Touch 등 3계층 : Media : Core Audio, OpenAL, PDF, Audio Mixing, Audio Recording, Core Animation, Video PlayBack, OpenGL ES, JPEG, PNG, TIFF 2계층 : Core Service(Foundation) : Collections, Core Location, 주소록, Ne.. 2021. 3. 9.
swift 기초 - assert , guard , protocol swift 기초 - assert , guard , protocol [1] assert 와 guard 애플리케이션 동작 도중에 생성하는 다양한 결과값을 동적으로 확인하고 안전하게 처리할 수 있도록 확인하고 빠르게 처리할 수 있다. assert(condition:Bool, message:String) assert 함수는 디버깅 모드에서만 동작한다. 배포하는 애플리케이션에서는 제외 된다. 주로 디버깅 중 조건의 검정을 위하여 사용한다. [1-1] 기본 예제 var someInt : Int = 0 //조건에 부합하므로 지나간다. assert(someInt == 0, "someInt != 0") someInt = 1 //조건에 부합하지 않으므로 지나가지 않는다. //assert(someInt == 0, "some.. 2021. 3. 5.
swift 기초 - 옵셔널 체이닝, 타입캐스팅 swift 기초 - 옵셔널 체이닝, 타입캐스팅 [1] 옵셔널 체이닝 [1-1] 옵셔널 체이닝 옵셔널 체이닝은 옵셔널 요소 내부의 프로퍼티로 또다시 옵셔널이 연속적으로 연결되는 경우 유용하게 사용할 수 있다. [1-2] 예제 클래스 및 인스턴스 생성 //사람 클래스 class Person { var name : String var job:String? // 직업 - 옵셔널 var home: Apartment? //집 - 옵셔널 //이름 초기화 메소드 init(name:String) { self.name = name } } //아파트 클래스 class Apartment { var buildingNumber : String //동 var roomNumber: String //호수 var guardMan : P.. 2021. 3. 5.
swift 기초 - 상속, 인스턴스의 생성과 소멸 swift 기초 - 상속, 인스턴스의 생성과 소멸 [1] 상속 스위프트의 상속은 클래스, 프로토콜 등에서 가능하다. 열거형, 구조체는 상속이 불가능하다. 스위프트는 다중상속을 지원하지 않는다. 클래스의 상속과 재정의 class 이름 : 상속받을 클래스 이름 { //구현부 } [1-1] 클래스 정의 class Person { //[1] 인스턴스 변수 var name : String = "" //[2] 인스턴스 메소드 func selfIntroduce(){ print("저는 \(name) 입니다.") } //[2] 인스턴스 메소드 2 //final 키워드 - 재정의 방지 final func sayHello(){ print("hello") } //[3] 타입 메서드 //재정의 불가 타입 메서드 - static.. 2021. 3. 4.
swift 기초 - 클로저 , 프로퍼티, 프로퍼티 감시자 swift 기초 - 클로저 , 프로퍼티, 프로퍼티 감시자 [1]클로저 코드의 블럭 일급 시민 변수, 상수 등으로 저장, 전달인자로 전달이 가능 함수 : 이름이 있는 클로저 정의 { (매개변수 목록) -> in } [1-1] 함수를 사용한다면 func sumFunction(a:Int , b:Int) -> Int { return a+b } var sumResult: Int = sumFunction(a: 1, b: 2) print(sumResult) //3 [1-2] 클로저 정의 및 할당 var sumCloser : (Int, Int) -> Int = { //매개변수 목록 -> 반환타입 (a:Int , b:Int) -> Int in //실행코드 return a + b } [1-3] 클로저의 사용 sumResu.. 2021. 3. 4.
swift 기초 - 옵셔널, 구조체, 클래스, 열거형, 값타입 참조타입 [1]옵셔널 [1] 옵셔널 : nil이 들어올 수 있다. 옵셔널이 아닌 타입에는 nil을 할당할 수 없다. [1-1] ! 암시적 추출 옵셔널 nil 할당가능 , 기존변수처럼 사용가능 잘못된 접근으로 인한 런타임 오류 발생 가능 var optionValue1 :Int! = nil; switch optionValue1 { case .none: print("nil!"); //print(optionValue1 + 1) case .some: print("not nil..."); print(optionValue1 + 1) } [1-2] ? : 일반 옵셔널 기존 변수처럼 사용불가능 옵셔널과 일반값은 다른 타입이므로 연산불가. 파라미터가 옵셔널 타입이므로 nil이 들어갈 수 있다. func some(someOption.. 2021. 3. 3.
메모리 관리 메모리 관리 객체의 일생 살아있는 벌이나 새와 마찬가지로 프로그램의 객체에도 일생이 있다. 객체는 alloc 이나 new로 태어나고, 메시지를 받고 일을 하면서 살아가면서 컴포지션이나 메소드의 인수들을 통해 친구를 만들고, 일생이 끝날 때 해제되어 결국 죽는다. 객체의 일생이 끝나면 그 객체가 사용하던 메모리는 말끔하게 재활용되어 다음에 태어날 객체를 위해서 사용된다. 참조횟수 객체가 끝날때를 어떻게 알 수 있을까? 참조횟수라는 방법을 사용한다. 모든 객체는 그 객체의 참조횟수라고 하는 정수 값을 가지고 있다. 어떤 코드에서 그 객체를 사용하고 있다면, 그 코드는 객체의 참조횟수를 증가시켜서 "이 객체가 사용되고 있다" 라고 알려준다. 그 코드가 객체 사용을 다 끝내면 참조횟수를 줄여서 객체가 더 이상 .. 2021. 2. 22.