본문 바로가기

프로그래밍/iOS,macOS

(64)
싱글톤 싱글톤 +(id) instance{static dispatch_once_t pred;static MyClass *obj=nil; dispatch_once(&pred, ^{obj = [[MyClass alloc] init];}); return obj;} class MyClass{static let instance = MyClass();}
코어 데이터 정리 헬퍼 클래스를 만들기 위해서 필요한 내용들 정리. * MO(엔티티) : NSManagedObject엔티티는 관계형 db의 테이블이라고 보면된다. managed object context 는 엔티티를 구현한 객체인 NSManagedObject를 통해 각 엔티티의 데이터를 처리하게 된다.엔티티는 각각 NSManagedObject 가 되며, 필요시 이를 상속받아 구현하면 된다.일반적으로 MO 클래스는 엔티티 이름과 동일하게 생성한다. 엔티티 편집화면에서 Editor > Create NSManagedObject Subclass.. 를 클릭하면 모델 클래스를 만들어 준다.NSManagedObject 객체를 상속받은 클래스를 만들고, 모델 편집화면에서 엔티티 선택후 속성창에서 클래스 이름을 입력해도 된다. 자동생성..
슬라이드메뉴 간단한 메뉴뷰를 하나 만드려는데, 전체적인 구조도 볼겸 관련 내용이 정리된 소스를 정리해본다.참조 : https://www.raywenderlich.com/32054/how-to-create-a-slide-out-navigation-like-facebook-and-path * 단순히 사용되는 메쏘드나 구조를 살펴보기 위함이라 실제 내용과 차이가 있음.이 튜토리얼은 메뉴뷰가 에니메이션되는 형태가 아닌 센터뷰가 이동하는 형태로 처리되어 있다. 따라서, 메뉴뷰는 고정되어 있고, 센터뷰가 슬라이드되면서 메뉴뷰가 보이게 된다. 메뉴뷰가 이동하게하려면 frame 등 영역정보를 화면 외부로 설정해서 안으로 에니메이션 하면 될것으로 보인다. 센터뷰 생성self.centerViewController = [[centerV..
UITableView / UICollectionView 기본 프로토콜 필수메쏘드* static UITableView의 경우 인스턴스가 미리 생성되어있으므로, 아래 루틴은 필요 없게 된다. // 전체 열의 갯수(섹션별)-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{return 0;} // indexPath에 해당하는 UITableViewCell-(UITableViewCell *)tableView(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{// tableview cell 객체를 얻거나 생성해 리턴해 줘야한다.// 셀식별용 문자열// static NSString *cell..
파일 가져오기 Sandbox내의 디렉토리 ENUMNSDocumentDirectoryapp_root/Documents NSCachesDirectoryapp_root/Library/Caches 메쏘드NSString * NSTemporaryDirectory()app_root/tmp 각 path는 아래와 같이 얻을 수 있다.NSArray *paths=NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);NSString *dir=[paths objectAtIndex:0];NSString *file=[dir stringByAppendingPathComponent:@"file_name.ext"]; tmp폴더 같은 경우 메쏘드 이므로 조금더 ..
뷰 에니메이션 [UIView animateWithDuration:1.0delay:options: animations:^{// 에니메이션 수행} completion:^(BOOL finished) {// 에니메이션 완료 후}]; ios7[UIView animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:^{}completion:^(BOOL finished) {}];
비동기 처리 ( GCD , NSOperation ) NSObjectperformSelectorInBackground:@selector(메쏘드) withObject:오브젝트 ];performSelectorOnMainThread:@selector(메쏘드) withObject:오브젝트 waitUntilDone:YES]; GCD 시리얼 디스패치 큐와 컨커런트 디스패치 큐로 나뉘는데, 다중 작업을 처리하는 경우 Concurrent Dispatch Queue를 사용하며, 기타의 경우는 Serial Dispatch Queue를 사용한다. 시스템의 메인큐는 Serial이고, 시스템 글로벌 큐는 Concurrent에 해당한다. 글로벌큐 얻기dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ) 메인큐 얻기(메인 쓰..
[objective-c] 블록구문 블록은 ^로 시작하는 구문. 구문 자체가 객체처럼 사용가능하게 하는데.. 함수포인터라고 생각해도 될 듯 싶다. 블록 구문을 변수로 선언리턴형 (^블록변수이름)(타입,타입) = ^(타입 변수명,타입 변수명) { } // 정의double (^multiplyTwoValues)(double, double) = ^(double first, double second) {return first * second;}; // 사용double ret = multiplyTwoValues(first, second); 블록 구문 역시 함수포인터 처럼 typdedef로 정의해 두고, 일반 객체처럼 사용이 가능하다.typedef int(^BlockTypeName)(int);BlockTypeName block_name = ^(int ..