분류 전체보기 195

ARC, Objective-C 메모리 관리 방법

Objective-C 메모리 관리 방법 프로그램을 실행시킬 때 프로그램을 메모리에 올려서 메모리에서 CPU와 상호작용하며 프로세스로 돌아감.그런데 메모리가 부족하다면? 새로운 프로그램은 실행되지 않을 수도 있고 동작중이던 프로세스도 뻗어버리기도 하며 메모리가 확보될 때까지 무한정 루프를 돌기도 하고 또한 운영체제에서 필요한 프로그램을 실행시키기 위해 다른 앱을 강제종료 시키기도 함.요약 ==> 프로그램이 돌아가는 데에 악영향을 끼침. 원활히 여러 프로그램들이 동작하려면 메모리가 잘 관리가 되어야함.어떻게? 사용중인 객체는 사용중이라고 표시! ==> 소유(Own)소유된 횟수는 '참조 카운트'에 저장됨.==> 참조 카운트가 0이라면 -> 더 이상 사용하지 않는군! -> 해제 초기에는 리테인 카운터를 수동으로..

Objective-C 기초 2019.02.15

콜렉션 특징

콜렉션(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 -> 원시 타입 데이터 변환 메소드..

Objective-C 기초 2019.02.15

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..

Objective-C 기초 2019.02.15

가변형 배열(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..

Objective-C 기초 2019.02.15

가변 문자열

가변 문자열 문자열이 자주 바뀌는 경우는 가변문자열(NSMutableString)을 사용하는 것이 좋음.NSString 클래스를 상속받음. -> NSString 클래스 기능을 전부 사용할 수 있음. 버퍼를 이용함. --> 필요한 버퍼의 크기를 알고 있다면 따로 명시해주면 성능에 도움됨. 1) 버퍼 크기 명시 메소드-(id)initWithCapacity:(NSUInteger)capacity; +(id)stringWithCapacity:(NSUInteger)capacity; 문자열 변화는 문자열이 변경되므로 void를 반환 2)덧붙이기3)중간에 삽입 4)삭제

Objective-C 기초 2019.02.14

파일로 쓰기, 파일 읽기

문자열을 파일로 쓰기, 파일 읽기 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..

Objective-C 기초 2019.02.14

URL Encoding

URL Encoding (URL 인코딩) URL로 쓸 수 있는 문자열은 알파벳, 숫자, 몇개의 특수문자가 전부이다.한글을 URL로 쓸 수 없다. 한글을 쳐도 되는데? 하는 것은 웹 브라우저에서 자동으로 인코딩 해주기 때문이다. 문자열을 URL에서 사용할 수 있도록 인코딩 하려면?메소드를 사용함. (UTF-8을 기본으로 사용하므로 따로 명시 하지 않아도 됨.) 기존에 문자열 인코딩에 사용되던 stringByAddingPercentEscapesUsingEncoding 메소드는 OS 10.11부터 사용안함. (NSUTF8StringEncoding이라는 인자를 따로 줬어야 했음 - 불편...) URL을 문자열로 디코딩 하려면? 메소드를 이용하면 됨. ex)#import int main(int argc, cons..

Objective-C 기초 2019.02.14

==

== 원시 타입에서 값 비교를 할 때는 ==가 둘이 서로 같은 값이냐?! 를 의미하지만,포인터 타입에서 ==를 쓰면 주소가 같은지를 본다. 즉 값이 아닌 같은 객체냐?를 봄. ==> 객체의 내용 비교는 어떻게 하나?isEqual: 메소드를 이용.선언 형태 : -(BOOL)isEqual:(id)object; ==> 사용 예시if( [str1 isEqual:str2] )NSLog(@"예아");elseNSLog(@"노우"); 프레임워크의 클래스를 사용하는 경우라면 isEqual 메소드가 구현돼있기 떄문에 그냥 쓰면 되지만,커스텀 클래스에서 사용하려면 isEqual 메소드를 작성해줘야 함.

Objective-C 기초 2019.02.09