# Objective-C

39개의 포스트
post-thumbnail

[iOS/Objective-C] 키보드를 감추는 iOS 앱 만들기

지난 포스팅의 섭씨->화씨로 변환하는 앱을 실행해보면 입력할 땐 키보드가 자동으로 올라오는데, 키보드의 return키를 누르거나 디스플레이 다른 부분을 터치해도 키보드가 사라지지 않는다. 왜냐하면 아이폰 앱은 키보드를 사라지게 하는 기능을 개발자가 직접 구현해 놓아야하기 때문이다.(..ㄴㅇ0ㅇㄱ !) 따라서 이번 포스팅에서는 키보드를 감추는 코드를 만들 것이다. 예제 앱 만들기 인터페이스 UI 생성 ⬇️ HideKeyBoard 라는 이름의 프로젝트를 새로 생성한다. ⬇️ 텍스트를 입력 받는 text field 컨트롤을 화면에 추가하고 .h파일에 저 컨트롤 접근을 위한 아웃렛을 정의한다. ![](https://velog.velcdn.com/images/se_bb/post/14916e5f-1

2023년 7월 3일
·
0개의 댓글
·
post-thumbnail

[ios/Objective-C] Objective-C로 화씨->섭씨로 변환하는 간단한 앱 구현하기

포스팅에 앞서.. 회사 특정 상 Objective-C로 아이폰 운영을 할 줄 알아야하는 상황이다. 2012, 2013년도에 출간된 책이 그나마 최신일뿐만 아니라 구글링을 해봐도 따라하면서 배울 수 있는 꾸준한 포스팅을 못 찾았다 ㅠㅠ 그래서 회사 선배들이 사셨던 Obj-C iOS 책들을 두 세권(알라딘 중고로 구함..) 사서 세 개를 돌려보면서 포스팅을 올릴 예정이다. 복습용이라서 부정확한 용어 사용했을 수도 있으니까 참고만 해주세여 File -> New -> Project...를 누름 App 개발 할 사람 : "iOS" - "App" 선택 Objective-C 연습 할 사람 : "macOS" - "App" 선택 난 App개발 ![](https://velog.velcdn.com/images/se_bb/

2023년 6월 30일
·
0개의 댓글
·

Unreal Engine UPL(Unreal Plugin Language) : 모바일 네이티브 코드 사용법과 멀티 플랫폼 개발에 좋은 구조

언리얼 엔진으로 모바일 앱을 개발하다보면 OS에 종속적인 기능을 만들어야 할 때가 있다. 예를 들어 사진첩에서 사진을 가져오는 것이 있다. 안드로이드에서는 Intent와 StartActivity를 사용해서 다른 어플리케이션을 실행하고 데이터를 주고 받으며, 아래와 같은 코드를 통해 갤러리 앱에서 사진 데이터를 가져올 수 있다. 이 코드는 갤러리에서 사진 하나를 선택한 다음, 선택한 사진을 이미지 뷰에 띄우는 코드이다. IOS도 개발할 때 마찬가지로 Objective-c, Switf로 동일한 코드를 만들 수 있을 것이다. ( IOS 관련 글은 나중에 IOS 개발을 시작하면 작성 예정 )

2023년 5월 4일
·
0개의 댓글
·
post-thumbnail

Objective-C는 왜 Apple의 언어가 되었을까 ?

이 문서는 Swift 언어가 나오기 이전의 시기와 Apple의 운영체제인 OS X 주 언어인 Objective-C의 내용을 담고 있습니다. 2007년 iPhone의 등장 > 뜬금없이 iPhone 얘기를 하는 이유는 APPLE의 OS에서 가장 유명한 OS인 iOS를 짧게 소개해보려고 하기 위함입니다. 살짝 아이스 브레이킷 느낌으로 갑니다. (😇: 저는 아이폰 12를 사용합니다.) 글은 팩트 기반이지만, TMI나 저의 생각들은 이런식으로 천사 이모지가 설명해드릴거에요 ! 최초의 스마트폰 운영체제 iPhone OS 1 APPLE의 가장 유명한 제품인 iPhone은 2007년 스티브 잡스의 연설로 시작합니다. 청바지에 검은색 터틀넥, 이 발표를 시점으로 Apple은 가파른 성장 곡선을 유지하고 있

2023년 4월 14일
·
2개의 댓글
·
post-thumbnail

[React Native] iOS 위젯 - 구현

들어가며 시리즈의 설계편에 이어 구현에 대해서만 포스팅합니다. 간단한 Todo 앱을 예시로 설명합니다🥰 위젯은 앱 내 Todo의 값이 변하면 새로운 Timeline을 불러오도록 구현합니다. 저도 아직 모든 개념이 머리에 있지는 않아 100% 정확하지 않을 수 있어요. 양해 부탁드립니다.🙏 Github Repository - jiwooIncludeJeong/react-native-ios-widget 1. Create React Native App 우선 React Native App 생성! 2. 간단한 Todo 앱 작성 아주 간단한 Todo 앱을 작성해보았습니다! 복사 붙여넣기도 좋아요 왜냐하면 이 포스팅은 위젯이 주요한 포스팅이니까요! 그럼 다음과 같은 화면이 그려집니다. ![](https://velog.velcdn.com/images/jt_incl

2023년 4월 8일
·
2개의 댓글
·
post-thumbnail

[React Native] iOS 위젯 - 설계

React Native에서 위젯을 개발해야한다 > 사내 React Native(이하 RN)으로 개발된 앱에서 위젯 개발 feature가 생겼다. 나는 내심 iOS Native 개발을 해보고 싶던 터라 1순위로 해당 feature를 개발을 희망했고, 다른 개발자분들도 1순위로 원해서 사다리 타기를 통해 해당 feature를 내가 개발할 수 있게 되었다. 원했던 것이지만 RN의 Native Module도 한 번 만들어 본 적 없던 나에게 큰 챌린지가 될 것 같았고 꼭 해내고 싶었다. > 해당 포스트는 사내 앱 위젯 개발 경험을 예시로, 간단한 React Native에서의 iOS위젯 개발을 소개하는 글입니다. 설계 구현 으로 나누어 포스팅합니다. 설계 큰 틀 ![iOS Widget 설계](https://velog.velcdn.com/images/jtincluderw/post/1aebe05c-5df8-40e2-9584-1b3a5a754eff/image.png

2023년 4월 8일
·
0개의 댓글
·
post-thumbnail

[Flutter/Kotlin/Swift] 예제로 알아보는 네이티브 통신 (Platform Channel)하는 방법_Method Channel / Event Channel

예제로 알아보는 네이티브 통신 (Platform Channel)하는 방법 flutter_bloc equatable 플랫폼 통신(IOS) - Method Channel 플랫폼 통신(IOS) - Event Channel 플랫폼 통신(Android) - Method Channel 플랫폼 통신(Android) - Event Channel

2023년 3월 31일
·
0개의 댓글
·
post-thumbnail

[Swift/스위프트] Swift: 새로운 언어의 탄생

이제 개발자들의 선택은 'Swift'가 되지 않았을까? 지금까지 iOS 개발자들은 앱 개발을 위해서 Objective-C와 Swift 두 언어를 선택해 개발해왔습니다. Swift는 2014년에 Apple에서 개발했지만, Objective-C는 옛날부터 존재해 왔으며 오랫동안 iOS 개발자들이 가장 먼저 선택했습니다. Objective-C부터 Swift까지 가볍게 다뤄보려 합니다. Objective-C Objective-C는 iOS 및 Mac OS X 앱을 개발하는 데 사용되는 객체 지향 프로그래밍 언어입니다. 이름에서 파악할 수 있다시피 C언어를 기반으로 두고 있어 C언어가 할 수 있는 문법들을 모두 사용할 수 있습니다. Objective-C의 주된 이점은 동적으로 코드를 로드하여 작고 가벼운 프로그램부터 크고 복잡한 프로그램을 개발할 수 있습니다. Objective-C의 탄생과 발전 Objective-C 언어가 개발되고 현재

2023년 3월 20일
·
0개의 댓글
·

encodeWithCoder,initWithCoder 인스턴스 메소드

직렬화 직렬화(Serialization) 라는 표현은 대개 OOP언어에서 특정 클래스 오브젝트를 파일로 저장하거나 파일에서 읽어들일 때, 혹은 네트워크 등으로 전송하거나 받거나 하기 위해 특수하게 가공하는 것. 직렬화 기능은 NSCoding 이라는 프로토콜을 기반. 인스턴스 메소드 특정 클래스, 구조체, 열거형의 인스턴스에 속한 메소드. 이 메소드를 통해 인스턴스 내의 값을 제어하거나 변경. 인스턴스 메소드는 이름 그대로 그 인스턴스가 속한 특정 타입의 인스턴스에서만 실행 가능. ex> NSCoding protocol. (void)encodeWithCoder:(NSCoder *)coder; (id)initWithCoder:(NSCoder *)coder; void: 리턴이 없는 자료형. encodeWithCoder,initWithCoder : 인스턴스 메소드. initWithCoder : 직렬화된 데이터에서 Object를 만들어 낼 때 호출 encodeWithCode

2023년 2월 2일
·
0개의 댓글
·
post-thumbnail

LLVM을 이해하기 위한 나름의 정리

배경 한 회사의 면접을 보면서 이런 질문을 받았다. “프로젝트가 컴파일되는 과정을 말씀해보세요” 내가 머뭇거리니까 면접관님이 말씀하시길, “그러면 어떤 컴파일러로 돌아가는지 아시나요?” 나는 이렇게 대답했다. “LLDB…?” 면접관 : …? 그건 Debugger이고.. 이래서 LLVM이 정확히 무엇이고 어떤 역할을 하는지를 알아보고 싶었다. 나중에는 LLDB까지 무엇인지 확실히 알아서 최소한 다음에 이 질문을 받게 되면 대답은 제대로 할 수 있는 것이 내 목표이다. 컴파일러란 무엇인가 LLDB가 컴파일러라는 것은 어렴풋이 들어봤을 거다. 양보해서 컴파일러라는 말을 한번쯤 들어봤을 것이다. 우선 일반적인 C언어를 빌드할 때의 과정을 살펴보면… (어휴 복잡하다) 큰 과정을 순서대로 나열

2023년 1월 24일
·
0개의 댓글
·
post-thumbnail

[IOS] 시뮬레이터로 리모트 푸시 테스트 하기

리모트 푸시 테스트 방법 리모트 푸시(서버 푸시/FCM)를 테스트 하려고 하면 FCM에서 요청하거나 Admin/Server를 통해서 실제 디바이스에 전송을 해서 테스트를 하여야 하는데, 이 부분을 시뮬레이터로 테스트하는 방법에 대해서 간단하게 작성하겠다. .apns Mac에서 제공하는 기본 텍스트 편집기를 열고 안에 아무 내용이나 작성하고 저장을 한다. 저장한 파일의 확장자를 .apns 형태로 변경한 뒤 텍스트 편집기 안에 Push Apns Payload를 json 형태로 작성해 준다. Payload 작성시 "Simulator Target Bundle" 부분에 앱의 번들 ID를 입력해 주면 되고, 작성한 파일을 시뮬레이터에 드래그 앤 드랍을 해주면 바로 푸시가 전송되는 것을 확인할 수 있다.

2022년 11월 29일
·
0개의 댓글
·

[Objective-C] 클래스의 @property와 @synthesize

Objective-C의 클래스 데이터 유행에 대한 블루프린트 정의 어떤 내용을 포함할 수 있고, 어떤 일을 수행할 수 있는지 정의 클래스 정의는 interface 키워드와 인터페이스(클래스)이름으로 시작한다 Obj-C의 모든 클래스는 NSObject 기본 클래스에서 파생된다 인스턴스 변수는 비공개이며 클래스 구현 내에서만 접근 가능하다 원칙적으로는 인스턴스의 속성은 아래처럼 접근하는 게 좋다: @property(nonatomic, readwrite) double height;   무슨 소린지 잘 모르겠으니까 예제를 따라 쳐보며 이해해보도록 하자.   오류 메세지: length라 하는 프로퍼티가 Box 클래스의 객체에서 발견되지 않았다 - 인스턴스 변수 length를 가져올까? → = “이 포인터 번지수 가서 이 내용에 접근해라” ![](https://vel

2022년 10월 17일
·
0개의 댓글
·
post-thumbnail

Objective-C 둘러보기(4)

동적 바인딩(Dynamic Binding) 동적 바인딩은 컴파일 시간이 아닌 런타임에 호출할 메서드를 결정합니다. 동적 바인딩은 후기 바인딩이라고도 합니다. Objective-C에서 모든 메소드는 런타임에 동적으로 해결됩니다. 실행되는 정확한 코드는 메소드 이름(선택자)과 수신 객체에 의해 결정됩니다. 동적 바인딩은 다형성을 가능하게 합니다. 예를 들어, Rectangle 및 Square를 포함한 개체 컬렉션을 고려하십시오. 각 개체에는 고유한 printArea 메서드 구현이 있습니다. 다음 코드에서 [anObject printArea] 표현식에 의해 실행되어야 하는 실제 코드는 런타임에 결정됩니다. 런타임 시스템은 메서드 실행을 위한 선택기를 사용하여 Object의 클래스가 무엇이든 적절한 메서드를 식별합니다. 위의 예에서 볼 수 있듯이 printArea 메서드는 런타임에 동적으로 선택됩니다. 이는 동적 바인딩의 예이며 유사한 종류의 개체를 처리할

2022년 10월 12일
·
0개의 댓글
·
post-thumbnail

Objective-C 둘러보기(3)

구조체(Structures) Objective-C 배열을 사용하면 같은 종류의 여러 데이터 항목을 보유할 수 있는 변수 유형을 정의할 수 있지만 구조체는 다른 종류의 데이터 항목을 결합할 수 있는 Objective-C 프로그래밍에서 사용할 수 있는 또 다른 사용자 정의 데이터 유형입니다. 구조체는 레코드를 나타내는 데 사용됩니다. 도서관에서 책을 추적하고 싶다고 가정해 보겠습니다. 각 책에 대한 다음 속성을 추적할 수 있습니다. 제목 작가 주제 도서 ID 구조체 정의(Defining a Structure) 구조체를 정의하려면 struct 문을 사용해야 합니다. struct 문은 프로그램에 대해 둘 이상의 멤버가 있는 새 데이터 유형을 정의합니다. struct 문의 형식은 다음과 같습니다. 구조체 태그 는 선택 사항이며 각 멤버 정의는 int i와 같은 일반 변수 정의입니다. 또는 float f; 또는 다른 유효한 변수 정의. 구

2022년 10월 11일
·
0개의 댓글
·

[Objective-C] 포인터

포인터란? 동적 메모리 할당(dynamic memory allocation)과도 같은 기능을 더 쉽게 수행할 수 있도록 마련된 방안 포인터는 다른 변수의 메모리 상의 주소를 담고있는 주소를 담고있는 변수 포인터 정보 = 해당 데이터의 메모리 주소 + 메모리를 차지하는 크기 이 두 정보만 있으면 데이터의 정확한 위치를 알 수 있다 04번에서 시작하는데 길이는 3이야 -> 저장소 위치: 04-05-06 메모리 주소 모든 변수는 &연산자(ampersand operator)로 접근 가능한 메모리 주소가 할당되어 있다 var1에 할당된 주소는 1c0843fc, var2는 1c0843f0인 걸 확인할 수 있다   포인터의 데이터 타입 포인터가 정의될 때 지정되는 데이터 타입은 포인터가 가르키게 되는 상수 혹은 변수의 데이터 타입이며, 실질적인 포인터의 타입은 메모리 주소를 나타내는 16진수로 모두 동일

2022년 10월 10일
·
0개의 댓글
·

[Objective-C] 메서드 정의하기

메서드 정의 기본 문법   예시: 두 개의 매개변수로 받아서 둘 중 가장 큰 값을 반환하는 함수 기본적으로 Objective-C에선 함수를 메서드라 칭한다 함수 선언할 때 앞에 , 를 붙이는데 는 일반 함수(Objective-C 메서드)를, 는 클래스를 의미한다   max() 메서드의 선언부 메서드 선언부는 컴파일러에게 함수 이름과 메서드를 호출하는 방법을 알려준다 선언만 하고 함수의 본문은 별도로 정의 가능 메서드를 한 소스 파일에서 정의하고 별도의 소스 파일에서 해당 메서드를 호출할 때 메서드 선언이 필요하다 / 메서드가 호출되는 파일의 최상단에 이 선언부가 들어가줘야 한다 일반적으로 Objective-C의 implementation 부분은 .m 확장자 파일에, inferface 부분은 .h 확장자 파일에 별도로 저장되기 때문 @interface엔 메서드 선언이, @implemen

2022년 10월 10일
·
0개의 댓글
·

[Objective-C] 문자열 출력하기

NSLog을 사용한 문자열 출력 문법 기본 문법 NSString 상수 선언 후 출력   서식 지정자 Format Specifier 기본적으로 문자열은 의 형식으로 출력한다 NSString 객체를 출력할 땐 안에 알맞는 서식 지정자를 넣어줘야 한다 > C언어의 서식 지정자란: 컴퓨터가 어떤 정보를 어떻게 해석할 것인지 지정히고, 형식(데이터 타입)이 정해진 정보를 문자 형식으로 재해석한다. (서식 지정자 리스트) %d 10진수로 출력 %o 8진수로 출력 %x 16진수로 출력 %f 소수 출력 소수점 자리수를 지정하려면

2022년 10월 10일
·
0개의 댓글
·
post-thumbnail

Objective-C 둘러보기(2)

함수(Functions) 함수는 작업을 함께 수행하는 명령문의 그룹입니다. 모든 Objective-C 프로그램에는 main() 이라는 하나의 C 함수 가 있으며 가장 사소한 프로그램은 모두 추가 함수를 정의할 수 있습니다. 코드를 별도의 기능으로 나눌 수 있습니다. 코드를 여러 기능으로 나누는 방법은 사용자에게 달려 있지만 논리적으로 구분은 일반적으로 각 기능이 특정 작업을 수행하도록 합니다. 함수 선언 은 컴파일러에게 함수의 이름, 반환 유형 및 매개변수에 대해 알려줍니다. 함수 정의는 함수의 실제 본문을 제공합니다. 기본적으로 Objective-C에서는 함수를 메서드라고 부릅니다. Objective-C 기반 프레임워크는 프로그램에서 호출할 수 있는 수많은 기본 제공 메서드를 제공합니다. 예를 들어, 다른 문자열에 문자열을 추가하려면 appendString( ) 메서드를 사용합니다. 메소드는 함수, 서브루틴, 프로시저 등과 같이 다양한 이름으로 알려져 있습니

2022년 10월 7일
·
0개의 댓글
·
post-thumbnail

Objective-C 둘러보기(1)

개요(Overview) 오브젝티브-C(Objective-C)는 C 프로그래밍 언어 위에 스몰토크(Small Talk) 프로그래밍 언어의 기능을 추가해 객체지향 언어로 만든 범용 언어입니다. 처음에 Objective-C는 NeXT가 NeXTSTEP OS용으로 개발했으며 Apple이 인수해서 iOS 및 Mac OS X용으로 활용중 입니다. 객체 지향 프로그래밍(Object Oriented Programming) Objective-C는 객체 지향 개발의 네 가지 기둥을 포함하여 객체 지향 프로그래밍을 완벽하게 지원합니다. 캡슐화 (Encapsulation) 데이터 은닉 (Data hiding) 상속 (Inheritance) 다형성 (Polymorphism) 예제 코드(Hello World) 기초 프레임워크(Foundation Framework)

2022년 10월 6일
·
0개의 댓글
·
post-thumbnail

Objective-C (Sneak Preview)

소개 1970년대 초, AT&T Bell 연구소의 데니스 리치(Dennis Ritchie)가 C언어 창시 그러나 이 언어는 연구소 밖에서 사용 가능하게 된 1970년대 후반에서야 인기를 얻고 널리 사용되었다. UNIX의 인기에 힘업어 빠르게 대중에 전파되었다. 1980년대 초에 브래드 콕스(Brad J.Cox)는 Objective-C를 설계했다. SmallTalk-80 언어 기반 C 언어 위에 있는 계층적(layered) 구조 C 언어를 확장하여 '객체'를 생성하고 다룰 수 있는 새 언어 NeXT Software는 1988년에 Objective-C의 라이선스를 받아 NeXTSTEP 운영체제의 개발환경과 라이브러리를 개발하였다. 1992년, 자유소프트웨어재단(Free Software Foundation)의 GNU 개발환경에 Objective-C 개발환경이 추가되었다. FSF의 모든 제품의 저작권은 재단이 소유하며 GNU Gerneral License(GPL)로

2022년 10월 5일
·
0개의 댓글
·