개발 335

kotlin 물음표(?) 와 느낌표(!!)에 대해서

개복치개발자 강의는 아래의 링크에서 확인할 수 있습니다. 개복치개발자 | Linktree uyalae@naver.com linktr.ee 코틀린에서 null 처리에 대해서 좀 예민한데 코틀린에서 ?는 간단하다 ?는 null일 수 있음을 의미한다. 그러니깐 var abc:String? = null 을 보면 abc라는 변수가 null일 수도 있다 이기 때문에, null을 집어넣어도 에러가 나지 않는다. 그렇다면 !!는 뭘까요? value!!.value 처럼 쓰이는데 !!는 null이 아니다 라고 선언해주는 것입니다. 이렇게 간단하게 !!와 ?에 대해서 정리해봤습니다.

개발/Kotlin 2019.06.21

Kotlin lateinit and lazy

코틀린은 유독 null에 예민합니다. 자바로 안드로이드를 개발하닥 코틀린으로 넘어왔는데 좀 특이한 lateinit 과 lazy라는 것을 발견했습니다. 간단하게 2가지의 차이점을 찾아보니 lateinit 일단 변수부터 선언하고 난 뒤에 값을 할당해준다. 라고 생각하면 될 듯 합니다. private var abc:String 이라고 선언을 했을 때 변수 abc가 초기화되지 않았다고 해서 에러메세지가 나오는데 private lateinit var abc:String 이라고 하면 따로 에러가 나오지 않습니다. 이름 그대로 나중에 초기화를 해준다 라고 생각하면 될 듯 합니다. 그렇다면 lazy는 무엇일까요 lazy도 마찬가지도 나중에 초기화를 시켜주는 형태지만 Callback처럼 초기화 시점을 고민하지 않고 쓸 ..

개발/Kotlin 2019.06.21

Positioning UI Elements Programmatically

UI를 스토리보드 화면에서 그리는 것이 아니라 코드로 그리는 법을 알아보겠습니다, 이렇게 코드를 기입하면 아래와 같이 빨간 네모가 생기는 것을 볼 수 있습니다. 코드를 뜯어보면 let square = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) -> square란 변수를 선언하는데 x,y축 0부터 그리고 가로세로 넓이를 50씩 한다 square.backgroundColor = UIColor.red -> square란 변수에 백그라운드 컬러를 빨강으로 한다 self.view.addSubview(square) -> square를 뷰에 추가해준다 일단 이렇게 간단하게 그려볼 수 있습니다.

개발/IOS(Swift) 2019.06.19

프로가드(proguard)란

Android Proguard란 코드 난독화 및 안드로이드 앱의 용량을 줄여주는(불필요한 멀티덱스를 제거하여) 프로그램입니다. 코드가 노출되면 안 되는 앱이나, 용량이 큰 앱에 적용하는 것이 좋은데, 저의 경우는 코드를 따로 난독화하여 비밀로 할 필요가 없어서, 용량을 줄이는 용도로만 사용했습니다. 적용하는 방법은 간단한데 gradle 파일에 위의 debug{}와 release{} 부분을 추가하면 됩니다. debug{} 부분에는 proguardFile 'proguard-debug.pro' 를 추가하여, 디버그 모드일 때는 난독화가 되지 않도록 합니다. 간단하게 Hello World를 출력한는 앱의 apk파일을 만들어봤는데 그냥 빌드할 때랑 프로가드를 적용한 후, 빌드했을 때의 결과입니다. 2.3MB ->..

App Delegate

IOS 프로젝트를 처음 생성하면 위의 화면과 같은 디렉토리가 생깁니다. 이 중에서 처음에 가장 궁금했던 것이 AppDelegate입니다. 이건 과연 뭘까 라고 해서 봐 보니 대충 영어 읽어보니, 앱의 실행되고 종료되고 뭐 백그라운드에서 동작을 정의하는 것 같습니다. 이번 글에서는 개요만 설명하고, 좀 더 심도깊게 다룰 기회가 있으면 다뤄보도록 하겠습니다. application - 앱이 처음 시작 될 때 실행 applicationWillResignActive - 앱이 actice에서 inactive로 이동될 때 실행 applicationDidEnterBackground - 앱이 background 상태일 때 실행 applicationWillEnterForeground - 앱이 background에서 for..

개발/IOS(Swift) 2019.06.17

UI Handling programmatically 2

UI 핸들링을 동적으로 한번 해보겠습니다. 위의 그림과 같이, Roll 버튼을 눌렀을 때, 주사위를 동적으로 바꿔주는 작업인데 imageView1.image = UIImage(named : "이미지이름")을 넣어줘야 합니다. imageView2에도 마찬가지로 해주면 되겠죠. 첫번째로 diceArray라는 것을 만들어줘서 이미지 이름 리스트를 만듭니다. 그 다음에는 이미지 리스트에 있는 배열을 랜덤으로 하나씩 이미지뷰에 넣어주면 되겠죠? 아래 보시는 것 처럼 랜덤한 배열을 이미지뷰에 넣어주면 됩니다. 그렇다면 roll button 을 클릭하면 자동으로 주사위가 돌아갑니다. 매우매우 쉽습니다. 또한 한가지 테크닉을 해보자면 핸드폰을 흔들 때 일어나는 행동을 처리할 수 있는데 이런 코드를 넣으면 디바이스를 흔..

개발/IOS(Swift) 2019.06.17

UI Handling programmatically

Main.Storyboard 에서 UI를 그리는 방법이 있기는 한데, 이 그린 UI들을 프로그래밍으로 핸들링해야합니다. 우선 창을 보기 좋게 2개로 나눕니다. Xcode에서는 창을 이렇게 나눌 수 있습니다. 상단에 보이는 동그라미 2개 있는 부분 누르시면 이렇게 창이 2개로 분할됩니다. 그 다음 이미지를 클릭해서 오른쪽 클릭으로 쭉 끌어놓으면 ImageView1 란 이름을 입력해주고, 다른 주사위의 부분도 imageView2 라고 입력해주면 됩니다. 그러면 @IBOutlet var imageView1: UIImageView! 이라는 것이 생성되는데 이 imageView1 이라는 변수를 핸들링하며 저 이미지를 프로그래밍으로 조작하면 됩니다. 그렇다면 Event 처리는 어떻게 할까요? Event 처리도 매우..

개발/IOS(Swift) 2019.06.16

IOS - Hello World

모든 서비스의 기본인 Hello World 입니다. IOS의 경우 맥os에서 XCODE(엑스코드)를 설치하시면 되는데 엑스코드 설치 후, 실행시켜주면 됩니다. 그 다음은 두번째에 있는 Create a new Xcode project -> Single View App -> project name 에 원하는 프로젝트명 적으면 프로젝트가 생성됩니다. 뭔가 만들 수 있을 것 같은 화면이 나오는데, 여기 왼쪽에 보시면 Main.storyboard에서 레이아웃을 보통 설정합니다. 오른쪽 위에 동그라미 안에 네모를 클릭하면 여러가지 레이아웃에 요소(컴포넌트)들을 넣을 수 있는 창이 뜨는데 여기서 Label, Textview, Tableview 등을 선택하셔서 사용하시면 됩니다. 여기까지는 매우 쉬운 Hello wor..

개발/IOS(Swift) 2019.06.15

Kotlin 이란

저는 가장 처음 개발을 안드로이드로 시작했습니다. 안드로이드를 개발 할 때, 기존에는 JAVA 라는 언어로 개발을 했는데, 요즘에는 Kotlin이라는 언어로 개발을 합니다. 왜?? 그럴까요?? 이유는 매우매우 단순합니다. 구글에서 앞으로 코틀린으로 개발을 하라고 했기 때문이죠.. 자, 그렇다면 구글에서 시키는대로 하기전에 코들린의 장단점에 대해 잠깐 짚고 넘어가보겠습니다. 우선, 단점은 모두 다 그렇듯이 자바 쓰다가 코틀린으로 개발할려면 귀찮죠... 새로 배워야 하니깐. 그렇다면 장점은 무엇이 있을까요?? 코틀린 공식 홈페이지에 가면 뭐 이렇게 나와 있답니다. - Concise (간결성) - Safe (안정성) - Interoperable (상호운용가능성) - Tool-friendly (도구 친화성) 음..

개발/Kotlin 2019.05.20