Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

Objective-C24

Objective-C 암호화(AES/RSA), 해시(Hash) 해싱(Hashing)목적: 입력 데이터를 고정된 크기의 고유한 해시 값으로 변환해서 데이터를 식별하거나 무결성을 확인.특징: 단방향 함수로, 해시 값으로부터 원래 데이터를 복원할 수 없다.사용 사례:데이터 무결성 확인: 파일의 해시 값을 저장해두고, 나중에 동일한 해시 값을 생성하여 데이터가 변경되지 않았음을 확인.비밀번호 저장: 비밀번호를 해시 값으로 변환하여 저장함으로써, 실제 비밀번호를 저장하지 않고도 비밀번호 검증이 가능.디지털 서명: 문서의 해시 값을 서명하여, 문서의 변경 여부를 검증.종류:MD5, SHA-1,SHA256 등 현재는 SHA256을 가장 많이 사용한다.SHA-256 (Secure Hash Algorithm 256-bit)길이: 256비트 해시 값 생성특징: SHA-2 계열에 속하.. 2024. 6. 5.
Objective-C 생체 인증(Bio Authentication) LocalAuthentication서버를 통한 인증이 아닌, 아이폰이나 아이패드 등에서 비밀번호, 터치아이디, 페이스 아이디로인증하는 것을 로컬인증이라고 한다. 내부에 구현되어 있는 LAContext는 사용자 인증을 관리하는데 사용되는 클래스이다. LAContext를 통해서 인증 요청 생성, 인증 성공 여부 확인 등의 작업을 처리할 수 있다.아래의 핵심 메서드 두 개를 살펴보자. canEvaluatePolicy:error:사용 디바이스가 특정 인증 정책을 평가할 수 있는지 확인하는 메서드이다.(아이폰을 기준으로 기종마다 비밀번호만 가능, Touch ID 가능, Face ID 가능으로 다름) 터치 아이디와 페이스 아이디가 나눠져있을 줄 알았는데, 그냥 Bio 인증으로 묶여 있어서알아서 자동으로 기종에 따라.. 2024. 6. 4.
Objective-C 코드 베이스 세팅 1. 신규 프로젝트 생성상단 메뉴바 File->New->ProjectInterface: StoryboardLanguage: Objective-C2. 스토리보드 제거a. 좌측 네비게이터에서 Main 스토리보드 파일 제거 b. 좌측 네비게이터에서 Info.plist 확인 후 토글 전체 펼쳐   Window Application Session Role의 Item에서 Storyboard Name 삭제  c. 좌측 네비게이터에서 프로젝트 선택 후   Build Settings -> Info.plist Values의 UIKit Main Storyboard File Base Name 삭제3. Scene 설정* iOS 13 이후 윈도우, 뷰 관련 설정은 SceneDelegate를 통하도록 변경됨. SceneDelega.. 2024. 6. 4.
22. Objective-C 메모리 관리 MMR, ARC 앱 개발을 하다보면 메모리 누수 메모리 누수 하는 얘기를 들어봤을 것이다.예전에 비하면 스마트폰의 성능과 램 용량이 넉넉해져서 좀 덜하지만.. 그래도 앱의 성능을 위해서는 메모리 관리의 개념을 알고 있는 것은 굉장히 중요하다.MRR (Manual Retain-Release)최근 많은 언어들이 메모리 관리의 많은 부분을 자동으로 해주지만, Objective C와 같은 C계열 언어는 메모리 관리를 직접 해줘야 했다. 필요한 경우에 메모리에 객체를 올리고, 객체가 더 이상 필요 없어지면 메모리에서 직접 해제해 주는 것이다.깜빡하거나 실수로 필요없는 객체를 메모리에서 해제하지 않으면 쓸데없이 메모리를 잡아먹고 있는 녀석들이 많아지는데 이걸 메모리 누수라고 한다. MRR은 이름 그대로 수동으로 메모리 할당 및 해.. 2024. 5. 23.
21. Objective-C Protocol 프로토콜 [프로토콜] 프로토콜은 '이러한 메서드를 구현해야 해!'라는 제약사항이라고 설명할 수 있다. Objective-C에서 상속은 단일 상속만 지원하는 반면, 프로토콜은 다중 채택이 가능하다.또한 프로토콜을 통해 객체를 참조할 수도 있기 때문에 다형성 구현에도 매우 유용하다.즉 클래스 단위에 의존하는 대신, 프로토콜에 의존하도록 객체 간 결합도를 낮출 수 있다는 것이다.프로토콜 문법@protocol 프로토콜이름@required//반드시 구현해야 하는 메서드@optional//구현이 선택인 메서드@end 프로토콜 채택(준수)@interface MyClass: NSObject ...@end채택(adopting), 준수(conforming)의 미묘한 차이가 있지만둘 다 클래스가 프로토콜이 정의한 요구 사항을 충족한.. 2024. 5. 22.
20. Objective-C Category, Posing, Extension [Category, Posing, Extension] 이번에는 클래스를 확장할 수 있는 기능들에 대해서 알아보자.Category기본 클래스에 나만의 기능을 추가하는 등특정 상황에서 이미 존재하는 클래스에 기능을 추가하고 싶은 경우에  Category를 사용할 수 있다.(변수는 추가할 수 없다.)@interface 클래스명 (카테고리명)//method declare@end 카테고리는 원본 클래스를 수정하지 않고, 어떤 클래스에서든 선언할 수 있다.카테고리에서 선언한 메서드는 원본 클래스의 모든 인스턴스에서 호출 가능하다.(자식 클래스 포함)런타임에서 카테고리를 통해 추가된 메서드와 원본 클래스에서 구현된 메서드는 동일한 방식으로 동작한다.(다만 이름이 동일할 경우 메서드끼리 덮어씌워지는 등 충돌할 수 있어.. 2024. 5. 22.