분류 전체보기 110

[Objective-C] 메모리 관리

1. 애플리케이션과 메모리 애플리케이션 - 객체의 행위, 속성으로 동작 객체의 생성 - 메모리 공간 차지 사용이 끝나면 객체를 해제 2.ARC 옵젝씨에서의 메모리 관리 기법 객체에 '사용 중'이라고 기록 -> 소유(own)하기 리테인 카운트: 객체의 소유된 개수 리테인 카운트 0 -> 사용하지 않는다 -> 해제 수동 시절 소유하기 -> 리테인 카운트 증가 소유권 해제 -> 리테인 카운트 감소 많은 오류와 어려움 자동 시절 ARC 기술 제공 (iOS 5) 자동 작성 객체 소유하기 -> 포인터 변수로 할당 NSObject *ptr =[[NSObject alloc]init]; 객체 소유권 해제 -> 포인터 변수를 nil 혹은 다른 객체 ptr = nil; 추가 포인트로 소유하기 NSObject *ptr = [..

IOS/Objective-C 2023.03.11

[Objective-C] 셀렉터와 프로퍼티

셀렉터 클래스에 선언된 메소드 구별하기 메소드 식별할려면?? -> 이름, 파라미터 개수, 레이블 메소드 선언 -(NSUInteger)length 셀렉터 length ex) -(NSComparisonResult)compare:(NSString *)string 셀렉터 => compare: -(NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask 셀렉터 => compare:options: -(NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange 셀렉터 => compare:o..

IOS/Objective-C 2023.03.10

[Objective-C] 객체 생성 메소드

객체 생성(alloc/init) : [[클래스_이름 alloc] init] alloc: 객체 생성 init: 초기화 객체 생성 과정에서 동작해야 하는 코드 -> init 메소드 재정의 init 메소드 재정의 부모 클래스를 이용한 초기화 부모 클래스의 초기화 과정 성공시 초기화 코드 동작 생성된 객체 반환(self) ex) 사각형 객체 생성시 가로와 세로 길이 자동 설정 -(id)init{ self = [super init]; if(self) { // 초기화 코드 작성 width = 10; height = 10; } return self; } 만약, 초기화 과정에 추가 정보가 필요하면 -> initWith 메소드 생성(헤더에 선언) -(id)initWithWidth:(int)newWidth height:(..

IOS/Objective-C 2023.03.09

[Objective-C] 동적 타입과 바인딩

정적 타입: 코드 작성시 타입을 명시 BOOL boolVar; int intVar; NSString *strVar; 동적 타입: 코드 작성시 타입을 명시하지 않음 id 사용, 포인터 형이고 *을 사용하지 않음 id dyanmicTypeVar; -(void)dynamicTypeMethod:(id)arg; 바인딩: 참조와 구현이 연결 포인터 변수가 객체와 연결 메소드 호출 코드와 메소드 구현부 연결 정적 바인딩: 컴파일 시간에 결정 동적 바인딩: 런타임(runtime) Objective-C -> 동적 바인딩 언어 포인터가 가르키는 객체의 클래스 알아내기 -(Class)superclass; -(Class)class; 클래스에서 생성된 객체 알아내기 - (BOOL)isMemberOfClass:(Class)aCl..

IOS/Objective-C 2023.03.09

[Objective-C] Class 상속

클래스 상속이란? -> 부모 클래스의 행위, 속성 상속을 의미한다. 옵젝씨는 단일 상속을 지원함! iOS 개발에서 만나는 상속 뷰(부모 클래스)와 레이블, 이미지 뷰, 버튼 뷰의 속성과 행위(위치, 크기, 화면 표시)를 상속 상속을 통해서 상세화, 구체화됨 1. 자식 클래스 생성 Subclass of -> 부모 클래스를 의미함 #import "Rectangle.h" @interface Square : Rectangle @end 2. 상속과 is-a 관계 자식 클래스 객체는 부모 클래스 객체로 취급 뷰 관계에서의 is-a 관계 UIView *view1 = [[UILabel alloc]init]; UIView *view2 = [[UIImageView alloc]init]; 사각형과 정사각형에서의 is-a 관..

IOS/Objective-C 2023.03.09

[SwiftUI] TCA 정리

The Composable Architecture(TCA) 뜻 The Composable Architecture(TCA)는 일관되고 이해할 수 있는 방식으로 어플리케이션을 만들기 위해 탄생한 라이브러리입니다. 합성(Composition), 테스팅(Testing) 그리고 인체 공학(Ergonomics)을 염두에 둔 TCA는 SwiftUI, UIKit을 지원하며 모든 애플 플랫폼(iOS, macOS, tvOS, watchOS)에서 사용 가능합니다. The Composable Architecture 구성 요소 상태(State) 관리 : 간단한 값 타입들로 어플리케이션의 상태를 관리하는 방법, 상태를 공유를 통해 화면에서 일어나는 변화(Mutation)를 다른 화면에서 즉시 관측(Observe)하는 방법을 제공..

IOS/SwiftUI 2023.03.01

[Objective-C] Class 만들어보기

1. 클래스 파일 만드는 방법 1-1. New File 생성 1-2. Cocoa Class 선택 1-3. Subclass of, Class 셋팅 1-4. 선언부 -> 헤더 파일(.h) , 구현부 -> 구현 파일(.m) 생성되는 것을 확인가능 클래스 선언부(.h) 클래스의 행위를 알리는 역할 형식 @interface Rectangle : NSObject @end 클래스 구현부(.m) 클래스의 행위 동작 코드 작성 형식 #import "Rectangle.h" @implementation Rectangle @end 멤버 변수 선언 클래스에서 다루는 데이터 클래스 선언부(.h)에 선언하기 -> 공개하고 싶을 때 @interface Rectangle : NSObject { int width; } @end 클래스 ..

IOS/Objective-C 2023.02.28

[Objective-C] 기본 표기법 및 객체 지향 프로그래밍

NSLog 디버그 영역의 콘솔에 정보 출력하기 NSLog(@”문자열 포맷”,인자) 문자열: @”문자열” 포맷 문자열과 인자 대치 포맷 문자열 정수형 %d, %u(unsigned) %ld, %lu(long 타입) 실수형 %f, %e(지수형) 16진수, 8진수 %x,%o 객체형 %@ 다수의 데이터 사용 NSLog(@”%d + %d = %d”, 1, 2, (1+2)); 포맷 문자열 개발자 사이트에서 string format specifier 검색하기 클래스 어플리케이션이란? 컨텐츠를 얻어와서 사용자에게 출력 사용자의 동작에 반응하여 컨텐츠 가공 컨텐츠의 공유 이때 어플리케이션에서 클래스란? 데이터와 데이터를 조작하는 행위의 단위 객체 실제 데이터가 반영하여 동작 중인 개체(instance, object) 클래..

IOS/Objective-C 2023.02.27

[Objective-C] Objective-C 파일 살펴보기

Objective-C 공부하는 이유 오픈 소스들을 살펴보면 옵젝씨를 사용하는 곳이 많다. Unity를 iOS에 연동하여 사용하는데 옵젝씨 코드였다. 회사에 들어가면 옵젝씨 코드를 볼수도 있다(주로 리펙토링) Swift랑 옵젝씨를 다 할 줄알면 앞으로가 든든해진다. 1. 프로젝트 생성하기 2. 생성된 파일 체크하기 이미지를 확인해보면 헤더 파일(.h)을 발견할 수 있다. -> 마치 C언어 느낌 -> Objective-C는 C언어를 확장한 언어이다! 따라서 Objective-C에서는 C언어의 모든 문법을 사용 가능 Objective-C는 C언어를 객체지향형으로 확장한 언어이다. 3. ViewController.h를 살펴보기 #import @interface ViewController : UIViewContr..

IOS/Objective-C 2023.02.26

[SwiftUI] @StateObject

App의 모델 데이터와 뷰 간의 connection을 만들어 주는 3가지 property wrapper type을 제공한다. ObservedObject EnvironmentObject StateObject StateObject의 개념 관찰 가능한 개체를 인스턴스화하는 속성 래퍼 유형입니다. StateObject의 필요성 SwiftUI는 언제든지 다시 뷰를 생성이 가능하다. -> 주어진 inputs을 가지고 뷰를 이니셜라이징하면 동일한 뷰가 생성이 된다. -> 뷰 안에서 ObservedObject를 만드는 것은 안전하지 않다. 대신에 SwiftUI는 이 목적을 위해 StateObject를 제공해준다. StateObject를 사용하면 뷰안에서 안전하게 ObservedObject 인스턴스를 만들 수 있다. c..

IOS/SwiftUI 2022.06.17