본문 바로가기

ARC, Objective-C 메모리 관리 방법 Objective-C 메모리 관리 방법 프로그램을 실행시킬 때 프로그램을 메모리에 올려서 메모리에서 CPU와 상호작용하며 프로세스로 돌아감.그런데 메모리가 부족하다면? 새로운 프로그램은 실행되지 않을 수도 있고 동작중이던 프로세스도 뻗어버리기도 하며 메모리가 확보될 때까지 무한정 루프를 돌기도 하고 또한 운영체제에서 필요한 프로그램을 실행시키기 위해 다른 앱을 강제종료 시키기도 함.요약 ==> 프로그램이 돌아가는 데에 악영향을 끼침. 원활히 여러 프로그램들이 동작하려면 메모리가 잘 관리가 되어야함.어떻게? 사용중인 객체는 사용중이라고 표시! ==> 소유(Own)소유된 횟수는 '참조 카운트'에 저장됨.==> 참조 카운트가 0이라면 -> 더 이상 사용하지 않는군! -> 해제 초기에는 리테인 카운터를 수동으로..
콜렉션 특징 콜렉션(Collection) 특징배열, 딕셔너리, NSSet등 콜렉션들은 id타입을 item으로 사용하는데, int, bool 처럼 원시타입과 구조체는 사용할 수 없음. ==> Wrapper Class를 이용하여 객체화 시켜서 사용.ex) NSNumber (원시타입을 객체화), NSValue(구조체를 객체화) 원시 타입 데이터 -> NSNumber 변환 메소드+(NSNumber *)numberWithInt:(int)value;+(NSNumber *)numberWithFloat:(float)value;+(NSNumber *)numberWithBool:(BOOL)value;가 있으나..간단하게@1@YES@3.14로 원시타입을 객체화 시켜 쓸 수 있음. 반대로NSNumber -> 원시 타입 데이터 변환 메소드..
NSSet NSSet 배열과 같이 object를 다루는데, 딕셔너리의 키처럼 '유일한' 객체만 다룬다. 역시 NSMutableSet도 지원.
NSDictionary NSDictionary 딕셔너리는 키(key)와 값(value)으로 구성됨. 구별의 척도이므로 각 키 값은 유일해야함. value 값은 같아도 됨. 값은 id타입으로 들어가므로 배열도 줄 수 있음. 딕셔너리 생성 방법 2가지 예시. 1)NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKey:@"value", @"key", @"value2", @"key2", nil];이렇게 값, 키, 값, 키로 생성 (순서에 유의) 2)좀 더 편하게 생성해보자.NSDictionary *dic2 = @{@"key":@"value", @"key2":@"value2"};훨씬 간편하고 헷갈리지도 않음. 딕셔너리 개수 확인. (키&값이 한 세트가 1개임)-(NSUInteger..
가변형 배열(MutableArray) 가변형 배열(MutableArray) #import int main(int argc, const char * argv[]) { @autoreleasepool { //배열 생성 NSMutableArray *my_array = [NSMutableArray array]; //array메소드로 배열 생성. [my_array addObject:@1]; [my_array addObject:@"hello"]; NSLog(@"\nCheck my mutableArray : %@",my_array); [my_array removeObjectAtIndex:0]; NSLog(@"\ncheck array : %@", my_array); } return 0; } ==> 결과 :2019-02-15 13:11:09.416725+09..
배열(Array) 배열(Array) #import int main(int argc, const char * argv[]) { @autoreleasepool { //배열 생성 NSArray *array1 = [[NSArray alloc] initWithObjects:@"A",@"B",@"C", nil]; NSArray *array2 = @[@"1", @"2", @3]; NSLog(@"\narray1 : %@", array1); NSLog(@"\narray2 : %@", array2); //배열 요소 접근 NSLog(@"\n2nd item : %@", [array1 objectAtIndex:1]); NSLog(@"\n1st item : %@", array1[0]); //for문에서의 배열 접근 for(int i=0; i 결과..
가변 문자열 가변 문자열 문자열이 자주 바뀌는 경우는 가변문자열(NSMutableString)을 사용하는 것이 좋음.NSString 클래스를 상속받음. -> NSString 클래스 기능을 전부 사용할 수 있음. 버퍼를 이용함. --> 필요한 버퍼의 크기를 알고 있다면 따로 명시해주면 성능에 도움됨. 1) 버퍼 크기 명시 메소드-(id)initWithCapacity:(NSUInteger)capacity; +(id)stringWithCapacity:(NSUInteger)capacity; 문자열 변화는 문자열이 변경되므로 void를 반환 2)덧붙이기3)중간에 삽입 4)삭제
파일로 쓰기, 파일 읽기 문자열을 파일로 쓰기, 파일 읽기 1) 파일로 쓰기NSString 클래스의 writeToFile 메소드를 사용하여 NSString 문자열을 파일로 출력. ex)#import int main(int argc, const char * argv[]) { @autoreleasepool { //문자열을 파일로 저장하고, 저장된 파일에서 문자열을 다시 읽어오는 코드 작성 NSString *str = @"ABCD"; NSString *dirpath = @"/Users/night-ohl/Desktop"; NSString *filepath = [dirpath stringByAppendingPathComponent:@"hello.txt"]; __autoreleasing NSError *error; BOOL ret = [s..