앱등이에게 살충제를 뿌린다./iOS
-
[iOS] NSURLConnection이 deprecated되었기에 우리는..앱등이에게 살충제를 뿌린다./iOS 2016. 1. 26. 00:14
문제 상황 NSURLRequest를 통해서 리모트에 있는 파일을 다운로드 하고싶어요. NSData *data에 담고싶은데 말이죠.. 코드는 아래와 같습니다. NSURL *Urlstring = [NSURL URLWithString:@"http://yourdomain.com/yourfile.pdf"]; NSURLRequest *request = [NSURLRequest requestWithURL: Urlstring]; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirec..
-
[NSHipster - iOS] Enumeration,Iteration,Traverse.. 반복문의 퍼포먼스에 대해 알아보자앱등이에게 살충제를 뿌린다./iOS 2016. 1. 22. 22:56
여러 기법의 프로그래밍에서 반복문은 항상 성능상의 이슈를 데리고 다닙니다. 절차적/구조적 : Loop내에서 포인터를 증가시킵니다. 객체지향 : 컬렉션 내부의 각각의 객체에 대한 함수나 메소드를 실행시킵니다. 함수형 : 재귀와 자료구조를 통해서 작동시킵니다. Objective-C에서는 C기반의 절차지향과 Smalltalk기반의 객체지향의 특징을 모두 갖고 있습니다. 아래에서 그 방법들에 대해 설명합니다. 1. C Loops(for/while) for문과 while문 정말 고전적일 정도로 익숙한 방법이죠. 아래와 같습니다. for (NSUInteger i = 0; i < [array count]; i++) { id object = array[i]; NSLog(@"%@", object) } 이러한 C기반의 반..
-
[iOS] Objective-C로 하는 비동기 처리앱등이에게 살충제를 뿌린다./iOS 2016. 1. 20. 23:40
비동기 처리 -asynchronous operation 또는 concurrent라고도 할 수 있겠습니다. 소요시간이 오래 걸리는 작업을 백그라운드에서 돌린 뒤 메인스레드에 반영하는 용도로 많이 사용되죠? 제가 아는 3가지 기법을 간략히 소개할까합니다. 1. NSObject객체의 - performSelectorInBackground:withObject: 메소드 입니다. NSObject객체에 구현되어 있으므로 사실상 모든 객체에서 호출이 가능합니다. 말그대로 백그라운드에서 실행하고 싶은 메소드를 SEL타입으로 파라미터에 전달하면 백그라운드에서 실행이 됩니다. 추가로- performSelectorOnMainThread:withObject:waitUntilDone: 메소드는 SEL타입을 메인스레드에 추가하는 역..
-
[iOS] Block을 사용할 때 주의해야할 점 : 순환참조(RetainCycle)로 인한 Memory Leak앱등이에게 살충제를 뿌린다./iOS 2016. 1. 17. 19:28
Block은 캡쳐링을 통해 Context의 걊을 전달하는 기능을 갖고 있습니다. 캡쳐링이 가능하기 때문에 장점을 가지기도 하지만 구멍또한 존재합니다. 1. 문제 발생 예제를 통해서 보겠습니다. 1. ViewController 객체 내부에서 model이란 객체를 strong으로 갖고 있구요. 2. model에서 ViewController를 참조하게 되는 블락을 전달하려고 합니다. Capturing 'self' strongly in this block is likely to lead to a retain cycle. : block에서 self를 강하게 참조하고 있기 때문에 순환참조 발생 가능성이 있습니다.라고 하고있네요. 네. model 객체에서 viewcontroller객체를 강하게 참조하고 있고 view..
-
[iOS] Block의 캡쳐링과 __block앱등이에게 살충제를 뿌린다./iOS 2016. 1. 17. 18:07
__block이 Block의 캡쳐링에 미치는 영향에 대해서 알아보자 결과는 : 23 42 17이 나오게 된다. 결과는 : 17 17 17 이 나오게 된다. 왜냐하면 Block은 생성이 될 때 주변의 Context에서 캡쳐링을 하게 된다. 즉 Block외부에 있는 변수들의 값을 상수 형태로 저장한 뒤 사용하게 되는 것이다. Block은 생성되는 시점과 호출되는 시점이 다르다는 특징이 있는데, 이 때 캡쳐링이 장점으로 작용하는 경우가 많다. 첫 번째 경우를 볼 때, block1의 NSLog(@"%d", val)은 NSLog(@"%d",23);으로 선언된 것과 다름이 없다. 물론 block2의 경우도 NSLog(@"%d",42);로 선언이 된것과 같은 다르지 않다. 하지만 두 번째 경우에는 다르다. val을 ..
-
Target-Action앱등이에게 살충제를 뿌린다./iOS 2016. 1. 10. 17:56
Target-ActionTarget-action is a design pattern in which an object holds the information necessary to send a message to another object when an event occurs. The stored information consists of two items of data: an action selector, which identifies the method to be invoked, and a target, which is the object to receive the message. The message sent when the event occurs is called an action message...
-
responder object앱등이에게 살충제를 뿌린다./iOS 2016. 1. 10. 17:37
Responder objectA responder is an object that can respond to events and handle them. All responder objects are instances of classes that ultimately inherit from UIResponder (iOS) or NSResponder (OS X). These classes declare a programmatic interface for event handling and define a default behavior for responders. The visible objects of an app are almost always responders—for example, windows, vie..
-
[iOS] -(BOOL)writeToFile:atomically: 메소드가 궁금해?앱등이에게 살충제를 뿌린다./iOS 2016. 1. 3. 21:40
-(BOOL)writeToFile:atomically:라는 메소드에 대해서 알아봅니다. writeToFile: 이름만 들어도 File에 객체를 쓸 것 같네요. 맞습니다.객체를 file에 아카이빙 하는 메소드입니다. atomically: 이름만 들어도 한번에 모든일을 동시에 처리할 것 같습니다. 맞습니다.atomically:에 YES를 전달하면 아카이빙은 임시 백업 파일에 먼저 기록하고 기록이 모두 성공하면 최종 데이터를 지정한 파일에 저장하게 됩니다.원본 파일의 손상을 막을 수 있고 시스템이 크래시를 내는일을 방지합니다. NSDictionary *glossary = @{@"class":@"class is good",@"struct":@"struct is also good"}; if ([glossary w..