본문 바로가기

아이폰 개발186

상속 예제 상속 예제 지난 포스팅(객체지향 프로그래밍 예제)에서 객체지향 예제를 알아봤는데, 도형을 그릴때 중복되는 변수와 메소드가 너무 많았다. 이번에는 상속을 통해서 코드를 줄여 보자. 우리가 머리 색깔이나 코 등을 부모님으로 부터 상속을 받는 것처럼, oop 에서 상속은 그 클래스가 다른 클래스로부터 특성을 물려받는 다는 것을 의미한다. 그 다른 클래스를 부모 클래스나 수퍼클래스라고 부른다. 원과 사각형은 Shpae으로 부터 상속을 받았기 때문에 Shpae의 두 인스턴스 변수를 갖는다. 참고: 상속 받는 인스턴스 변수들의 값을 직접 변경하는 것은 좋은 코딩 습관이 아니다. 인스턴스 변수를 변경하기 위해서는 변경하는 메소드를 만들어 사용하도록 한다. 상속 예제 코드 #import //모양 - 삭제 됨 //typ.. 2021. 2. 1.
객체지향 프로그래밍 예제 객체지향 프로그래밍 예제 모든길은 인다이렉션으로 통한다. 인다이렉션은 어떤일을 내가 직접하는 것이 아니라 다른 사람에게 부탁한다는 의미이다. 어떤 코드를 작성했는데, 이 코드가 다른 코드를 호출하고, 다른 코드는 또 다른 코드를 호출해서 내가 직접 처리하지 않지만 여러 경로를 거쳐 결국에 결과를 가져오는 식이다. 1.파일이름을 통한 인다이렉션 단어의 길이를 출력하는 프로그램이다. //단어 개수 출력 1 void showWordsCount (){ const char *words[4] = {"car" , "my book" , "working" , "running"}; int wordCount = 4; for (int i = 0; i < wordCount; i++) { NSLog(@"%s 단어 개수는 %lu .. 2021. 2. 1.
iOS WKWebView 예제 iOS WKWebView 예제 1.Interface 작성 웹뷰를 사용하기위한 프로토콜을 채택하고, WKWebView 프로퍼티와 변수를 만들어준다. 여기서 스토리보드로 웹킷뷰를 만들어서 연결 시켜주면안된다. 스토리보드로 만든 웹킷뷰는 읽기 전용이므로, 자바스크립트와 통신을 위한 속성을 지정해줄수 없다. 그래서 UIView 타입의 웹뷰 컨테이너를 만들어서 웹뷰를 컨테이너 안에 넣어주는 방식으로 구현해야 한다. ViewController.h #import #import #import "Reachability.h" // WkWebView에서 주소가 변경되거나 스크립트를 사용할 경우 사용할 Delegate함수를 사용하기 위해 // 아래의 Delegate들을 참조합니다 @interface ViewController.. 2021. 1. 30.
NSURLSession 공통 모듈 예제 NSURLSession 공통 모듈 예제 NSURLSession을 델리게이트 패턴으로 만들어서 사용할 수 있도록 설계했다. SessionObj.h #import NS_ASSUME_NONNULL_BEGIN //세션 호출시 알려주기 위한 비공식 프로토콜 (델리게이트) @protocol MySessionDelegate -(void) getResultDataFromMySessionData; @end @interface SessionObj : NSObject //세션 호출시 알려주기 위한 델리게이트 프로퍼티 @property (nonatomic , weak) id mySessionDelegate; @property (strong, nonatomic) NSDictionary *resultData; @property .. 2021. 1. 29.
iOS 공통 로그 예제 iOS 공통 로그 예제 ComLog.h #import @interface ComLog : NSObject //로그 객체 싱글턴 패턴으로 생성 +(ComLog *)sharedObject; //로그 출력 : 메소드, 라인넘버, 텍스트 -(void)showLog:(const char *) method line:(int) lineNum logs:(NSString *) logText; @end ComLog.m //로그 출력, 로그 출력 안함 상수 #define output TRUE //#define output FALSE #import "ComLog.h" @implementation ComLog +(ComLog *)sharedObject{ static ComLog *comlog = nil; static dispa.. 2021. 1. 28.
디자인 패턴 - 싱글톤 패턴 예제 디자인 패턴 - 싱글톤 패턴 예제 CommonUtil.h #import @interface CommonUtil : NSObject{ } +(CommonUtil *)sharedObject; @property NSString * commonstring; @end CommonUtil.m #import "CommonUtil.h" @implementation CommonUtil + (CommonUtil *)sharedObject{ NSLog(@"sharedObject 호출 "); static CommonUtil *commonUtil = nil; /* dispatch_once_t는 dispatch_once가 실행되었는지 여부를 저장하고 있는 포인터 변수. 이 값을 보존하지 못한다면 여러번 실행될 수 있음. 최초값 .. 2021. 1. 28.
iOS AVPlayer 예제 iOS AVPlayer 예제 순서 0.스토리보드에서 뷰 그리기 1. 라이브러리 import 2. 변수 선언 #import "ViewController.h" #import @interface ViewController () //비디오 뷰 @property (weak, nonatomic) IBOutlet UIView *videoView; //AVPlayer 플레이어 @property (strong, nonatomic) AVPlayer *player; //AVPlayerLayer @property (strong, nonatomic) AVPlayerLayer *playerLayer; //재생 여부 체크 @property (nonatomic, assign) BOOL isVideoPlaying; //현재 시간 라벨.. 2021. 1. 26.
iOS AVAudioPlayer 예제 iOS AVAudioPlayer 예제 iOS AVAudioPlayer 개발순서 1. AVFoundation import 2.AVAudioPlayerDelegate 채택 3.프로퍼티 선언 및 시작, 정지 메소드 선언 #import #import @interface AudioPlayer : NSObject @property (nonatomic , strong) NSURL *fileURL; @property (nonatomic, strong) AVAudioPlayer *audioPlayer; -(void)play; -(void)stop; @end 4.오디오 세션 초기화 및 변수 초기화 #import "AudioPlayer.h" @implementation AudioPlayer @synthesize fileUR.. 2021. 1. 26.
iOS AudioFileStream 예제 iOS AudioFileStream 예제 동작원리 1.AudioFileStream 구조체 생성 SimpleStreamer.h /* 참고: 네트워크 상태는 시시각각 변할 수 있으므로, 이에 대응하려면 버퍼에 충분한 오디오 데이터가 있어야 한다. */ #import #import // 할당할 오디오 큐 버퍼 개수 #define kNumAQBufs 3 // 배열 내의 패킷 디스크립션 개수 #define kAQMaxPacketDescs 512 // 하드 코딩된 버퍼 사이즈 #define kAQBufSize 1048576. /* 1MB 또는 2**20 */ /* 오디오 큐 버퍼와 관련 데이터를 저장할 데이터 구조체 스트리밍 클래스의 인스턴스는 PlayQueueData 구조체 배열을 생성한다. */ typedef .. 2021. 1. 22.