본문 바로가기

728x90
반응형
SMALL

iOS

(64)
일급 컬렉션 일급 컬렉션(First-class collection) 일급 컬렉션(First-class collection)은 데이터를 담는 컨테이너로, 배열(Array)과 딕셔너리(Dictionary)가 해당됩니다. 배열은 인덱스를 사용하여 데이터를 저장하고, 순서가 있는 데이터를 처리하기에 유용합니다. 딕셔너리는 키-값 쌍으로 데이터를 저장하며, 데이터를 검색하기에 유용합니다. iOS에서는 일급 컬렉션을 이용하여 데이터를 보다 효율적으로 처리할 수 있습니다. 예를 들어, 배열을 이용하여 여러 데이터를 한 번에 처리하거나, 딕셔너리를 이용하여 검색 속도를 높일 수 있습니다. iOS에서 일급 컬렉션은 다양한 라이브러리와 프레임워크에서 사용되며, Swift나 Objective-C를 비롯한 다양한 프로그래밍 언어에서 지원..
One-Time-Pad 원타임패드(One-Time Pad) 암호학에서 사용되는 기법입니다. 이 기법은 평문을 암호화하기 위해 키와 평문의 각 비트를 XOR 연산하는 방식으로 작동합니다. 이 때, 키는 평문과 동일한 길이 이상을 가져야 하며, 한 번만 사용할 수 있습니다. (따라서 이 기법은 '한 번만 사용하는 패드'라는 의미로 '원타임패드'라고 불립니다.) 원타임패드는 이론적으로 안전한 암호화 방식으로 알려져 있지만, 실제로는 사용하기 어렵습니다. 이는 키를 안전하게 공유하는 것이 매우 어렵기 때문입니다. 또한, 키의 길이가 평문의 길이 이상이어야 하기 때문에, 큰 파일을 암호화하기에는 매우 비효율적입니다. 그러나 원타임패드는 이론적으로는 안전한 암호화 방식 중 하나이므로, 일부 특수한 경우에는 여전히 사용되기도 합니다. 예제..
Swift XML 파싱 공공데이터 포털의 경우 XML 데이터 포맷이 많아서 기록을 남깁니다. :) 예제 오픈 API: https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15101914#/layer-api-guide 한국관광공사_관광사진 정보_GW 한국관광공사가 보유하고 있는 관광사진갤러리 콘텐츠의 사진 제목, 촬영장소, 촬영일 등의 정보를 제공 www.data.go.kr *** +해야 할 것들 *** Info.plist 에서 App Transport Security Settings -> Allow Arbitrary Loads 를 'YES' 로 해주셔야합니다. :) API_KEY 숨기는 방법 -> https://trashblog.tistory.com/1..
객체지향의 역할, 책임 차이 쉬운 예 객체지향의 역할, 책임 차이 쉬운 예 게임의 경우 역할: 플레이어, 적, 맵 등 자신이 맡은 것 책임: 맡은 역할을 잘 수행할 기능 코드 예제 // 역할: Player, 책임: 이동, 점프, 공격 protocol Player { var name: String { get } func move(to position: CGPoint) func jump() func attack() } // 역할: Enemy, 책임: 이동, 점프, 공격 protocol Enemy { var name: String { get } func move(to position: CGPoint) func jump() func attack() } // 역할: GameMap, 책임: 맵 생성, 맵 이동 protocol GameMap { var ..
솔리드(SOLID) 원칙 SOLID 원칙 객체 지향 프로그래밍에서 지켜져야 하는 다섯 가지 원칙을 의미합니다. S - 단일 책임 원칙 (Single Responsibility Principle) O - 개방-폐쇄 원칙 (Open-Closed Principle) L - 리스코프 치환 원칙 (Liskov Substitution Principle) I - 인터페이스 분리 원칙 (Interface Segregation Principle) D - 의존 역전 원칙 (Dependency Inversion Principle) (이 다섯 가지 원칙을 줄여서 SOLID 원칙이라고 합니다. 이를 지키면 객체 지향 프로그래밍에서 유지보수, 확장, 재사용 등을 더 효과적으로 할 수 있습니다.) 단일 책임 원칙 소프트웨어 개발의 SOLID 원칙 중 하나..
iOS UDP 통신 쉬운 예제 코드 예제 코드 *설정 앱 -> Wi-Fi -> IP 주소에서 IP주소를 찾고 밑의 코드에 "기기의 IPAddress"부분을 수정해주세요. import UIKit class ViewController: UIViewController { let ipAddress = "기기의 IPAddress" // 메시지를 전송할 IP 주소를 저장한다. let port: UInt16 = 12345 // 메시지를 전송할 포트 번호를 저장한다. let receivedMessageLabel = UILabel() //수신된 메시지를 출력할 UILabel 객체를 생성한다. var count:Int = 0 // 수신된 메시지의 수를 저장할 변수를 선언한다. //UDP 메시지를 전송하는 함수를 선언한다. func sendUDPMessage..
TCP, UDP TCP와는 UDP는 모두 인터넷 프로토콜 스위트(IP 스위트)의 일부로, 네트워크 통신에서 사용되는 프로토콜입니다. TCP(Transmission Control Protocol) 연결형 프로토콜로, 신뢰성이 높고 데이터의 전송 순서가 보장됩니다. 데이터 전송 중 손실이 발생하면 재전송을 하여 정확한 데이터 전송을 보장합니다. *3-way-handshaking과정을 통해 연결을 설정하며, 웹 브라우저나 이메일과 같은 애플리케이션에서 사용됩니다. UDP(User Datagram Protocol) 비연결형 프로토콜로, 신뢰성이 낮고 속도가 빠릅니다. 데이터 전송 중 손실이 발생하더라도 재전송을 하지 않고 그대로 진행됩니다. 주로 오디오나 비디오 같은 실시간 데이터를 전송하는 데 사용됩니다. *** 3-way-..
강한순환참조 iOS에서 강한 순환 참조가 발생하는 경우는 대부분 뷰 컨트롤러나 뷰, 델리게이트 등에서 발생합니다. 이러한 상황에서는 메모리 누수 문제가 발생할 수 있으므로, 강한 순환 참조를 해결해야 합니다. 강한순환참조 코드예제 class ViewController: UIViewController { var model: Model? override func viewDidLoad() { super.viewDidLoad() model = Model() model?.delegate = self } } class Model { var delegate: ViewController? func updateData() { delegate?.updateView() } } 위 코드에서는 ViewController 클래스와 Model..

728x90
반응형
LIST