목록분류 (103)
이모저모
Type method 인스턴스 method와 매우 유사하지만, 인스턴스에서 호출하는것이 아니라 type에 대해서 호출하는 method이다.(다른 언어에 보자면 클래스 메소드라 불리는 것들을 의미) Type method를 표현하기 위해서는 2가지 방법- class keyword 사용- static keyword 사용 아래 예제를 보자.1234567891011121314151617181920212223242526272829class BaseClass { class func classMethod() -> String { return "BaseClass \(#function)" } static func staticMethod() -> String { return "BaseClass \(#function)" }}..
Handling UIKit Gestures제스쳐 인식기를 사용하여 터치 처리를 단순화시키고, 사용자에 일관된 환경을 만들어준다. Overview제스쳐 인식기는 뷰에서 touch 또는 press 이벤트를 처리하는 가장 간단한 방법입니다. 어떤 뷰에도 1개 이상의 제스쳐를 붙일 수 있습니다. 제스쳐 인식기는 해당 뷰에 대해 들어오는 이벤트를 알려진 패턴과 매칭하여 해석하고 처리하는 일련의 로직들을 캡슐화 한 것입니다. 제스쳐 인식기가 매치되면 해당 객체에 알려준다.(이것은 전형적인 Target-Action 이다.) 이 객체는 ViewController, View 또는 앱의 다른 객체가 될 수 있다. 제스쳐 인식기는 Target-Action 패턴을 사용하여 노티를 전송한다. UITapGestureRecogni..
정수 삼각형이라는 문제이다. 오랜만에 알고리즘 문제를 풀어보니 c++을 다 까먹었다..... 머리가 너무 나쁜것 같다. 일단 문제는 아주 간단하며 풀이도 간단하다. 메모리는 O(N)이며 시간복잡도는 O(N^2)으로 풀 수 있다. 간단히 대각선 왼쪽 및 오른쪽에서 내려 올 수 있기 때문에 현재 위치가 i라면 i-1, i 중 큰 값을 가져오면된다. 점화식은 A[j][i] = max(A[j-1][i], A[j-1][i-1]) + input value (단 j는 j번째 줄 i는 그 줄의 i번째를 의미) 이렇게 보면 메모리가 N^2이여야 할것 같지만 이 전 값만 가지고 있으면 되기 때문에 2N으로 풀 수 있다. 아래는 풀이이다. 12345678910111213141516171819202122232425262728..
iOS에서는 image를 asset에 넣어서 사용한다. image asset에서는 normal, 2x, 3x 이렇게 나누어져 있다. 회사마다 이미지를 2x, 3x 다 넣는 곳도 있겠지만, 2x만 넣는 곳도 있을 것이다. 이때 궁금했던점이 Q) 3x 디바이스에서 2x 이미지를 어떻게 처리할 까? A) image asset에 있는 포인트 좌표를 따라간다. 1. 200 X 200 (픽셀) 이미지가 2d asset에 넣어졌다하면 2. 100 X 100, 2 scale의 이미지로 본다. (뷰 좌표계로 본다면) 3. 3x 디바이스에서 해당 이미지를 가져오면 100 X 100 자체의 포인트 좌표계를 먼저 보게된다. 그리고 scale링을 한다. 4. 그래서 3x, 2x 디바이스나 똑같은 크기의 이미지를 보게 된다.(3..
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define MOD 1000000007#define MAX_INT 2147483647#define MAX_LLONG 9223372036854775807 /*set을 이용하여 시간복잡도 O(NlogN)에 풀수 있다.*/int main(void){ freopen("sample.txt", "r", stdin); int n;set set; scanf("%d",&n); for(int i=0, x; i
Label 에서 text 설정할 때 Label의 길이를 넘어갈 수 있다. 이 때 스토리 보드에서 (물론 코드도 있다.) 1. Line Break위 설정에서 앞, 중간, 뒤가 텍스트가 짤리는 것을 설정할 수 있다. 2. Autoshrink위 설정으로 최소 font 사이즈를 설정하여 현재 font에서 1씩 줄여가며 텍스트가 짤리는 여부를 확인한다. 짤리지 않으면 그 font사이로 설정한다. 최소 font도 짤리게 되면 짤린 상태로(최소 font size) 보여지게된다.
ios 에서c 파일과 .mm 파일을 혼용하여 사용할 때 undefine symbol error가 나는 경우가 발생한다. 분명 정의를 찾아가 보면 함수가 정의되어 있지만 링커는 찾지 못한다고 한다. 그 이유는 C++에서는 name mangling이 발생하기 때문이다. name mangling 이란?간단히 말하면 컴파일러가 임의로 함수나 변수의 이름을 변경하는 것이다. 이것은 C++의 함수 오버로딩 때문이다. C에서는 보통 symbol table 이 _function name 으로 되는데C++ 에서는 name mangling이 되기 때문에, C 함수를 C++함수로 인식하게 되면 mangling 된 함수로 찾기 때문에있어도 찾지 못하는 것이다. 그래서 해결방법 해당 C 헤더 파일을 extern "C"{ 헤더 ..
Objective-C block에서 캡쳐에 대한 고찰 예제 1[someObject messageWithBlock:^{[self someMessage];...}]; 예제 2__weak typeof(self) weakSelf = self;[someObject messageWithBlock:^{__strong typeof(weakSelf) strongSelf = weakSelf;[strongSelf someMessage];...}]; 다음과 같은 예제가 있다 무슨 차이가 있을까?1. 예제 2가 예제1에 비해 안전하다.(weak로 self가 dealloc 되더라도 nil이 셋팅되기 때문에)이것 밖에 없을까??? 아니다.2. self의 life cycle이 서로 다르다.block이 셋팅될 때 캡쳐된 변수를 ret..
CallKit앱의 voip 서비스를 위한 시스템 호출 UI를 표시하고, 호출 서비스를 다른 앱 및 시스템과 일원화한다. Overview콜킷을 사용하면 전화 서비스를 시스템의 다른 통화 관련 앱과 통합할 수 있다. 콜킷은 호출 인터페이스를 제공하며, voip 서비스와의 백엔드 통신을 처리한다. 수신 및 발신의 경우 콜킷은 전화 앱과 동일한 인터페이스를 표시하므로 앱의 기본 모양과 느낌이 향상된다. 또한 콜킷은 방해 금지와 같은 시스템 수준의 동작에 적절하게 응답을 한다.통화 처리 외에도 전화번호부 앱 확장을 제공하여 발신자 ID정보와 서비스와 관련된 차단된 전화 번호 목록을 제공할 수 있다.Receiving an Incoming Call수신 통화를 받도록 앱을 구성하려면 먼저 CXProvider 객체를 만..
Implementing a Container View ControllerContainer view controllers are a way to combine the content from multiple view controllers into a single user interface. Container view controllers are most often used to facilitate navigation and to create new user interface types based on existing content. Examples of container view controllers in UIKit include UINavigationController, UITabBarController,..