• iOS에서 ScrollView와 Gesture 사용(ScrollView with Gesture in iOS).

    클래스업(ClassUp)을 최근에 달력처럼 무한 스크롤 방식을 도입하면서 슬라이드 메뉴와 스크롤 액션이 겹치는 상황이 발생했다. 그래서 스크롤만 되고, 아예 슬라이드 메뉴가 나오지 않았다. 라이브러리를 사용하다 보니 Gesture가 중복된 것이다. 그래서 찾아본 결과 UIGestureRecognizerDelegate를 사용하여 이를 쉽게 해결할 수 있었다. CocoaPods를 이용했기에 슬라이드 메뉴 라이브러리의 파일을 Unlock을 시킨 후, 아래와 같이 코드를...


  • 안드로이드 commit()와 같은 메소드 사용시 주의사항(Caution when you use mehtod like commit()).

    클래스업(ClassUp)에서 개발하던 중… SharedPreferences와 FragmentTransaction을 사용할 때에 생긴 실수이다. // 보통 아래와 같이 사용. SharedPreferences prefs = getSharedPreferences(NAME, MODE); SharedPreferences.Editor editor = prefs.edit(); editor.putInt(KEY, VALUE); editor.commit(); // 아래와 같이 사용하면 안됨. prefs.edit().putInt(KEY, VALUE); prefs.edit().commit(); 위의 이유는 SharedPreferences 소스를 보면 알겠지만 prefs.edit()을 할 경우 새로운 Editor 객체를 반환한다. FragmentTransaction도 마찬가지이다. //...


  • iOS sqlite3 락 문제(Sqlite3 is locked in iOS).

    클래스업(ClassUp)을 배포하고 받는 에러중에 sqlite3LockAndPrepare 같은 에러를 발견했다. 즉, 락이 걸린 것이다. 여기서 또 하나 배웠다. 나는 한번도 걸리지 않는 락이 다른 사용자에게서는 걸릴 수 있다는 것을… Singleton 패턴을 이용해서 Database 작업을 하고 있기 때문에 아래와 같이 락을 걸기로 했다. .h 파일 //... @interface ClassUpDbUtil : NSObject @property (nonatomic, string)...


  • 안드로이드 홈 스크린 위젯(앱 위젯) ANR(ANR in Android HomeScreen Widgets).

    클래스업(ClassUp)의 홈스크린 위젯 중에는 background 이미지를 호출하는 경우가 있다. 이 경우 이미지를 로딩하다 ANR이 발생하는 것이 확인되었다. 결국 이미지 로딩할 때 비동기 처리를 하기로 했다. 당연한 것이지만 설마했는데… AsyncTask를 사용하기로 했고 아래와 같이 쉽게 구현할 수 있다. 일단, AsyncTask를 커스텀한 클래스는 멤버변수로 RemoteViews, AppWidgetManager, appWidgetId를 가져야 한다. 왜냐하면 해당 이미지가...


  • NSURLSession 사용하는 방법(How to use NSURLSession).

    클래스업(ClassUp)을 iOS8이상 지원에서 iOS10 이상으로 지원을 바꾸었다. 그러자 warning이 엄청나게 뜬다… 전부 deprecated된 메소드에 대한 부분이었다. 일단 NSURLConnection을 NSURLSession으로 바꾸어야 한다. 일단 NSURLSession을 사용하게 되면 결과에 대한 처리를 main 쓰레드로 옮겨주어야 한다. 그래서 몇 가지 방법을 사용해 보았다. NSURLSession *session = [NSURLSessionConfiguration defaultSessionConfiguration] delegate:nil delegateQueue:[NSOperationQueue mainQueue]]; [[session dataTaskWithRequest:request completionHandler:^(NSData *...