본문 바로가기

ios 뽀개기180

objective c nsoperation 예제 objective c nsoperation 예제 개념정리 #. NSOperation =. 하나의 작업 단위. NSOperation은 모델링 상태, 우선순위, 의존성, 관리를 지원하는 추상 클래스이다. NSOperation를 상속하여 커스텀 클래스를 만들어 활용함. #. 네트워크 요청, 이미지 리사이즈, 텍스트 처리, 또는 기타 다양한 반복처리등을 처리하는 NSOperation 이 있을때, 이 특정 작업이 담겨있는 NSOperation 객체는 혼자서 일을 할 수 없다. 이러한 작업을 진행해주는 녀석이 NSOperationQueue이다. #. NSOperationQueue : NSOperationQueue는 작업의 동시 실행을 조절 기본적으로는 First-In-First-Out으로 동작 maxConcurre.. 2018. 11. 27.
ios objective c - http 네트워크 통신 1 ios objective c - http 네트워크 통신 1 이번포스팅에서는 ios 네트워크 통신에 대해서 간단히 정리한다. 상황클라이언트: ios 폰중간에서 컨트롤하는 녀석: 퍼사드서버: json 데이터형식 ios 네트워크에서 퍼사드 디자인 패턴을 알아본다. 퍼사드란 클라이언트와 서버 사이에 위치하는 녀석으로 클라이언트(앱)의 수정과 배포를 획기적으로 수월하게 해주는 녀석이다. 아래 코드는 날씨어플 버젼 1에서 버젼2로 코드수정을 했고, 주식어플 버젼1에서 버젼2로 코드 수정을하고 업데이트를 했다. 퍼사드 패턴을 써서 얼마나 쉽고 간결하게 처리를 해줬는지 확인했으면 ok. 코드에 주석을 달아 놓았다. 네비게이션 appdelegate.h//// AppDelegate.h// 1NetWork//// Creat.. 2018. 11. 14.
ios objective c 코어오디오 다루기 6 - 오디오 파일 변환 ios objective c 코어오디오 다루기 6 - 오디오 파일 변환 //// main.m// 6//// Created by service on 2018. 11. 12..// Copyright © 2018년 service. All rights reserved.// /* - mp3 나 aac 와 같은 엔코드된 파일을 .caf 컨테이너 파일로 변환하기 - 하나의 파일에서 데이터를 읽고, 메모리의 일부 패킷을 변환하고, 결과를 다른 파일에 쓰기 - 오디오 파일 서비스 사용함. */ #import #import #import #define kInputFileLocation CFSTR("/Users/service/Desktop/test_cbr.mp3") typedef struct MyAudioConverterS.. 2018. 11. 13.
ios AVFoundation으로 오디오 플레이어 만들기 AVFoundation 으로 오디오 플레이어 만들기 1. mp3 파일 넣어주기, view객체 지정 대략 이런 모습 2.위에서 만든 뷰객체들을 컨트롤러에 연결시켜 준다.(avfoundation import 하고 아래 두개의 매서드를 선언해준다.) //// ViewController.h// avFoundationMusic//// Created by MacBookPro on 10/11/2018.// Copyright © 2018 MacBookPro. All rights reserved.// #import #import //델리게이트 선언@interface ViewController : UIViewController - (IBAction)playPauseAudio:(id)sender;- (IBAction)sto.. 2018. 11. 10.
ios objective c 코어오디오 다루기 5 - 재생기능 ios objective c 코어오디오 다루기 5 - 재생기능 /* 오디오 큐는 오디오 스트림을 처리하기 위해서 버퍼의 큐를 사용한다. 즉 애플리케이션은 큐에 버퍼를 제공함으로써 설정하고, 큐는 개발자 코드가 실행돼야 하는 시점에 개발자 코드의 콜백 함수로 버퍼를 전달한다. 버퍼크기를 가늠하고, 매직쿠키를 관리하는 것은 녹음하기와 비슷하지만 얍축된 오디오 데이터의 버퍼를 기술하는 AudioStreamPacketDescription을 사용한다. */ #define kPlaybackFileLocation CFSTR("/Users/service/Library/Developer/Xcode/DerivedData/4-biuofoahmxwspaaibakhduwwgnmi/Build/Products/Debug/outpu.. 2018. 11. 9.
ios objective c 코어오디오 다루기 4 - 녹음기능 ios objective c 코어오디오 다루기 4 - 녹음기능 //개발자가 오디오 큐를 생성할때 (녹음할때)입력장치에서 캡쳐된 오디오의 버퍼를 애플리케이션에 전달하거나 //(재생할때 )버퍼를 채울것을 요구하기 위한 콜백함수를 제공한다. //맥의 기본입력장치에서 녹음을 하고 , 캡쳐된 오디오를 파일에 쓴다. //사용할 오디오 형식과 녹음을 할 파일을 설정 //오디오 큐를 생성 //큐를 시작 //큐를 중지 //파일을 닫는 등의 해제 작업 #import #import #define kNumberRecordBuffers 3 //오디오 큐 콜백을 녹음하기 위한 사용자 정보 구조체 typedef struct MyRecorder { AudioFileID recordFile; //output파일 참조 SInt64 re.. 2018. 11. 8.
ios objective c 코어오디오 다루기 3 - AudioStreamBasicDescription 데이터 구조체 ios objective c 코어오디오 다루기 3 - 데이터 구조체 코어오디오는 오디오 데이터 패킷을 스트림으로 본다. AudioStreamBasicDescription 구조체는 샘플율, 하나의 채널에 비트의 수, 프레임에 채널의 수등 데이터 구조를 묘사하는 메타데이터를 포함한다. 스트림의 ASBD에 관해 중요한점은 오디오 데이터 형식의 구현 세부사항이기 때문이다. 예로 파일이나 네트워크 스트림과 같은 어떤 소스에서 데이터를 읽을 때 코어 오디오의 여러 부분은 ASBD 값을 채운다. ASBD의 구조체 이름은 m으로 시작한다. // // main.m // // // Created by MacBookPro on 06/11/2018. // Copyright © 2018 MacBookPro. All rights.. 2018. 11. 7.
ios objective c 코어오디오 다루기 2 - AudioStreamBasicDescription으로 다양한 주파수의 음원만들기 ios objective c 코어오디오 다루기 2 - AudioStreamBasicDescription으로 다양한 주파수의 음원만들기 #import #import #define SAMPLE_RATE 44100 // 초당 44,100 샘플이나 44.1kHz 샘플율 #define DURATION 5.0 //얼마나 많은 오디오의 초를 만들기를 원하는지 //#define FILENAME_FORMAT @"%0.3f-square.aif" // 삐익~~~ 티비 신호 나갔을때 음 #define FILENAME_FORMAT @"%0.3f-saw.aif" //#define FILENAME_FORMAT @"%0.3f-sine.aif" //파일이름 넣기 //솔음으로 쭉~ int main(int argc, const char .. 2018. 11. 6.
ios objective c 코어오디오 다루기 1 ios objective c 코어오디오 다루기 1 오디오 파일을 불러와서 속성 정보를 출력하는 간단한 로직이다.코어오디오 api를 사용하기 위해서 AudioToolbox 라이브러리를 추가해줘야한다.(왼쪽 네비게이션에서 프로젝트 아이콘 클릭 -> Build Phasses -> Link Binary With Libraries -> + 버튼 클릭 -> 찾아서 추가해줌) // // main.m // 1 // // Created by service on 2018. 11. 6.. // Copyright © 2018년 service. All rights reserved. // /* 파일을 열고, 메타데이터에 대한 버퍼 할당 메타데이터를 갖는다. */ #import #import //파일경로 : "~/Music/iTu.. 2018. 11. 6.
objective c session post get방식 정리! 목표node js 로 서버를 만들고 nssession을 이용해서 통신하기 순서1.nods js 로 서버를 구동시킨다.2.xcode storyboard 로 뷰를 만든다.3.Viewcontroller.h 에 NSURLConnectionDelegate를 상속받는다. 4.Viewcontroller 에 nssession 을이용해서 서버와 통신을 한다. node js 서버(node js 로 구성한 초간단 서버다. get,post 방식으로 접속했을때 아래 로직을 타고, 이름과 비밀번호를 json방식으로 리턴하는 로직이다.자세한건 node js 카테고리 참조.)// 라우터를 설정합니다.app.get('/test', function (request, response) { // 응답합니다. response.json({us.. 2018. 10. 29.
Ios 그림파일을 텍스트로 바꾸기 Ios 그림파일을 텍스트로 바꾸기 참고 1. https://github.com/gali8/Tesseract-OCR-iOS/wiki/Using-Tesseract-OCR-iOS 2. https://github.com/tesseract-ocr/tessdata/tree/bf82613055ebc6e63d9e3b438a5c234bfd638c93 순서 1번 페이지에서 해당 소스를 pod 로 인스톨 한다. 전환할 텍스트가 있는 그림파일을 프로젝트에 넣어준다. 프로젝트에 tessdata 라는 이름의 폴더를 만들어주고 해당 언어의 파일을 넣어준다. (해당언어의 파일은 참고 2. 페이지에서 다운로드 가능하다.) 샘플 소스를 viewdidload 부분에 적는다. 변환할 사진을 보여줄 uiviewimage 객체 하나 변환된 t.. 2018. 10. 25.
ios 루팅방지 체크 소스 ios 루팅방지 체크 소스 +(BOOL)isJailbroken{ #if !(TARGET_IPHONE_SIMULATOR) if ([[NSFileManager defaultManager] fileExistsAtPath:@”/Applications/Cydia.app”]){ return YES; }else if([[NSFileManager defaultManager] fileExistsAtPath:@”/Library/MobileSubstrate/MobileSubstrate.dylib”]){ return YES; }else if([[NSFileManager defaultManager] fileExistsAtPath:@”/bin/bash”]){ return YES; }else if([[NSFileManager de.. 2018. 10. 24.
UIViewContorller의 수명주기 관리 메서드 UIViewContorller의 수명주기 관리 메서드 viewDidLoad : 뷰라는 틀을 처음 불러 올떄 실행해야 할 동작을 구성하는 메소드viewWillAppear : 뷰라는 틀에 보여질 내용을 구성하는 메소드viewDidAppear : 뷰 내용을 보이고 난 후 뷰에서 실행해야 할 동작을 구성하는 메소드viewWillDisappear : 뷰의 내용을 더 이상 사용하지 않게 될때 실행해야할 동작을 구성하는 메소드viewDidDisappear : 뷰라는 틀에 내용을 없앨때 실행해야하는 동작을 구성하는 메소드viewDidUnload : 뷰라는 틀을 사용하지 않을 때 실행해야할 동작을 구성하는 메소드 //실행 2018-10-22 14:57:33.267860+0900 AppLifeCycle[9503:62521.. 2018. 10. 23.
iOS 파일 시스템 관련 함수들 (NSFileManager Class) iOS 파일 시스템 관련 함수들 (NSFileManager Class) 디렉토리 다루기 methodexplanation- (NSString *) currentDirectoryPath현재 경로를 가져온다.- (BOOL) changeCurrentDirectoryPath:path현재 경로를 변환한다.- (BOOL) createDirectoryAtPath새 디렉토리 생성한다.- (BOOL) copyPath:from toPath:to handler : handler디렉토리 구조를 복사한다.- (BOOL) fileExistsAtPath : path isDirectory:(BOOL *)flag파일이 디렉토리인지 구분한다.- (NSArray *) directoryContentsAtPath:path디렉토리 내용을 가져온.. 2018. 10. 23.
objective c 의 모든것 objective c 기초 =============== 반환값, 파라미터가 객체일때 표기법 반환값, 파라미터가 객체 : 클래스 이름과 * 을 사용한다. - (NSString *)uppercaseString; 구조체: * 없이 사용 - (NSRange)rangeOfString:(NSString *)aString; =============== 객체 생성하기 #import int main(int argc, const char * argv[]) { @autoreleasepool { NSObject *obj1 = [[NSObject alloc] init]; // 반환값이 객체이기 때문에 *변수 사용. NSLog(@"Object : %@", obj1); NSObject *obj2 = obj1; NSLog(@"Obj.. 2018. 7. 28.
objective c alert 구현 alert 구현 - (IBAction)alert:(id)sender { //팝업구현을 하는 클래스 UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"알림" message:@"환영합니다." preferredStyle:UIAlertControllerStyleAlert]; //팝업 버튼 구현하는 클래스 UIAlertAction *closeAction = [UIAlertAction actionWithTitle:@"닫기" style:UIAlertActionStyleCancel handler:nil]; //팝업 클래스에 버튼을 넣는 메소드 호출 [alert addAction:closeAction]; //나타나게 [self present.. 2018. 7. 28.
객체지향 예제 객체지향 예제 main.m//// main.m// BookManager//// Created by MacBookPro on 2018. 7. 10..// Copyright © 2018년 MacBookPro. All rights reserved.// #import #import "Book.h"#import "BookManager.h" int main(int argc, const char * argv[]) { @autoreleasepool { Book *book1 = [[Book alloc]init]; book1.name = @"햄릿"; book1.genre = @"비극"; book1.author = @"세익스피어"; //[book1 bookPrint]; Book *book2 = [[Book alloc]ini.. 2018. 7. 10.
array dictionary array dictionary // // main.m // NSArrayTest // // Created by MacBookPro on 2018. 7. 10.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import int main(int argc, const char * argv[]) { @autoreleasepool { NSArray *frutie = [[NSArray alloc]initWithObjects:@"apple",@"banana", @"pineapple", @"lemon", nil]; /* for 문 예제 1 for (int i = 0; i< [frutie count]; i++){ NSLog(@"frute : %@", [fruti.. 2018. 7. 10.
NSString 예제 NSString 예제 // // main.m // StringTest // // Created by MacBookPro on 2018. 7. 9.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import int main(int argc, const char * argv[]) { @autoreleasepool { //초기화 //NSString *str = [[NSString alloc]initWithString:@"This is NSString"]; //간소하게 NSString *str = @"This is NSString"; NSLog(@"str : %@",str); //immutable class - 변경 불가 NSString *result;.. 2018. 7. 9.
if문 for문 switch문 if문 for문 switch문 main.m // // main.m // FirstObjectiveC // // Created by MacBookPro on 2018. 7. 9.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import //구현부 상속해줘야함 #import "Vehicle.h" int main(int argc, const char * argv[]) { @autoreleasepool { //4. Vehicle 객체 생성 Vehicle *hello = [Vehicle new]; //create instance object //5. 값 할당 및 출력 //도트로 값 할당 가능 //hello.wheels = 4; //hello.seats .. 2018. 7. 9.
클래스 파일 나누기 - 선언 - 구현 - 할당 클래스 파일 나누기 - 선언 - 구현 - 할당 선언부 Vehicle.h//// Vehicle.h// FirstObjectiveC//// Created by MacBookPro on 2018. 7. 9..// Copyright © 2018년 MacBookPro. All rights reserved.//// 선언부#import //객체 설정 @interface Vehicle : NSObject{ //1.member variable - 맴버 변수 선언 } //2.member method - 맴버 메서드 선언 //getter setter 대신에 property 작성 @property (getter=getWheels, setter=wheels:)int wheels; @property int seats; //인자 .. 2018. 7. 9.
property 옵션을 이용한 getter setter // // main.m // FirstObjectiveC // // Created by MacBookPro on 2018. 7. 9.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import // - 인스턴스 메서드, + 클래스 메서드 (동적 할당 x) //객체 설정 @interface Vehicle : NSObject{ //1.member variable - 맴버 변수 선언 // int wheels; // int seats; } //2.member method - 맴버 메서드 선언 //getter setter 대신에 property 작성 @property (getter=getWheels, setter=wheels:)int wheels; @pr.. 2018. 7. 9.
ObjectiveC seeter getter // // main.m // FirstObjectiveC // // Created by MacBookPro on 2018. 7. 9.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import // - 인스턴스 메서드, + 클래스 메서드 (동적 할당 x) //객체 설정 @interface Vehicle : NSObject{ //1.member variable - 맴버 변수 선언 int wheels; int seats; } //2.member method - 맴버 메서드 선언 -(void)setWheels:(int)w; -(void)setSeats:(int)s; //getter -(int)wheels; -(int)seats; -(void)print.. 2018. 7. 9.
objective-c 객체 사용법 objective-c 객체 사용법 // // main.m // FirstObjectiveC // // Created by MacBookPro on 2018. 7. 9.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import // - 인스턴스 메서드, + 클래스 메서드 (동적 할당 x) //객체 설정 @interface Vehicle : NSObject{ //1.member variable - 맴버 변수 선언 int wheels; int seats; } //2.member method - 맴버 메서드 선언 -(void)setWheels:(int)w; -(void)setSeats:(int)s; -(void)print; @end //3.Vehicl.. 2018. 7. 9.
swift http 통신 get방식 post 방식 - 일단 기록 // // ShowBibleVC.swift // JooBo // // Created by MacBookPro on 2018. 6. 12.. // Copyright © 2018년 MacBookPro. All rights reserved. // import UIKit class ShowBibleVC: UIViewController { // let commentTextView: UITextView = { let textView = UITextView() textView.backgroundColor = UIColor(red:0.92, green:0.92, blue:0.92, alpha:1.0) textView.translatesAutoresizingMaskIntoConstraints = false textVie.. 2018. 6. 13.
스위프트로 배우는 블록체인 - 탈중앙화 구현 스위프트로 배우는 블록체인 - 탈중앙화 구현 노드모듈생성지금까지는 하나의 네트워크에서 블록체인이 어떻게 작동하는지 알아보았습니다. 지금부터는 여러개의 노드를 만들어서 탈중앙화 개념을 구현해 보도록 하겠습니다. model.swift에 새로운 노드를 생성할 클래스를 아래와 같이 작성해 줍니다.//새로운 노드 생성 클래스class BlockchainNode : Codable { var address : String init(address : String) { self.address = address }} 아래에 이이서 class Blockchain 부분에 아래에 위에서 만든 노드 데이터를 컨트롤할 변수와 추가할 함수를 만들어 준다.//체인 구조체class Blockchain : Codable { //블록이 배.. 2018. 6. 2.
스위프트로 배우는 블록체인 - 채굴구현 스위프트로 배우는 블록체인 - 채굴구현 먼저 이전전 포스팅에서 다루었던 BlockChainSwift.playground를 vapor프로젝트에 App -> Model 안에 model.swift 라는 이름으로 새로 파일을 만들어서 복붙해준다. //// models.swift// App//// Created by MacBookPro on 2018. 5. 30..//import Vaporimport Foundationimport Cocoa //거래가 발생할때 거래 타입 선택 가능enum TransactionType : String, Codable{ case domestic case international} // 스마트 컨트랙드 프로토콜 함수 - 지원,신청하는 계약임protocol SmartContract{ f.. 2018. 6. 2.
스위프트로 배우는 블록체인 - vapor프레임워크로 서버 만들기 스위프트로 배우는 블록체인 - vapor프레임워크로 서버 만들기개요 이번 포스팅에서는 vapor 프레임워크를 이용해서 나의 mac 에서 웹서버를 구축해보도록 하겠습니다. vapor란 웹서버를 구현하는데 도움을 주는 모듈이라고 생각하시면 될것 같습니다. 그럼 먼저 vapor 홈으로 가서 설치를 해보도록 하겠습니다. 설치환경도 있기때문에 자신의 xcode 버전과 swift 버젼을 잘확인하신후 설치를 하시기 바랍니다. https://vapor.codes/ 설치순서1.터미널 열기2. brew install vapor/tap/vapor 입력3.작업 폴더 생성 vapor new Hello4.작업 폴더로 이동 cd Hello5.vapor프로젝트 실행 vapor xcode6. 예시화면(BlockChain-Server .. 2018. 6. 1.
스위프트로 배우는 블록체인 -스마트 컨트랙트 스위프트로 배우는 블록체인 -스마트 컨트랙트 스마트컨트랙트 구현물건을 산다거나 보험에 가입한다거나 할때 발생하는 거래데이터를 거래타입에 따라 결과값이 달라지는 스마트 컨트렉트 기능을 구현해보는시간을 가지겠습니다. 쉽게말해서 가입비가 일반회원이면 10만원이고, vip회원이면 20만원이 되는 스마트컨트랙트 거래기능을 구현해보겠습니다. 먼저 거래 타입 enum을 만들어 준다. 나중에 transaction을 발생시킬때 domestic인지 international인지 아래에서 선택할 수 있습니다.//거래 타입enum TransactionType : String, Codable{ case domestic case international} 거래 데이터 클래스를 수정해준다. fee, transactionType부분이.. 2018. 6. 1.
스위프트로 배우는 블록체인 -데이터구조 스위프트로 배우는 블록체인 - 데이터구조 순서xcode9열기 -> get Started with a playground -> 위쪽 탭에 mac os 선택 -> blank 선택 개요이번 포스팅에서는 블록체인 기술의 뼈대가 되는 데이터 구조를 만들어 보겠습니다. 먼저 거래를 담당하는 transaction 구조체, 거래내역과 해쉬, 이전해쉬값, nonce 값을 담는 block 구조체를 만들고 그 블록을 담을 blockchain 구조체를 만들어 보겠습니다. 위에서 오픈한 mac os playground를 열고 아래 코드를 작성해주세요. transaction 구조체//거래 데이터 구조체class Transaction{ var from: String var to: String var amount: Double //.. 2018. 6. 1.