본문 바로가기
728x90

iOS/Objective-C16

스트링 인터닝(String Interning) 문자열은 메모리 영역에 같은 상수를 참조하여 위치하게 되는데 이를 string interning 이라고 한다. 컴파일 시, 단순히 해당 문자열을 가져오는 것이 아니라 메모리에 존재하는 문자열 중 같은 문자열이 있는지 없는지 판단하여 리턴하게 된다. 같은 문자열이 있다면 그 주소값을 참조하게 되고, 같은 문자열이 없다면 새로 영역을 할당하여 그 주소값을 가져오게 된다. NSString * str1 = @"안녕"; NSString * str2 = @"안녕"; 이 경우, 둘은 같은 "안녕" 이라는 문자열이 선언되어 있으므로, 같은 주소값을 참조하게 된다. 참고: https://cornswrold.tistory.com/265 2021. 12. 15.
cornerRadius 원하는 부분에만 적용 UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.myview.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(25.0f, 25.0f)]; CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; maskLayer.frame = self.myview.bounds; maskLayer.path = maskPath.CGPath; self.myview.layer.mask = maskLayer; 2021. 12. 15.
Push Notification 앱이 실행상태가 아니다 (push 수신으로 앱 실행) 실행 중에 push 수신 백그라운드 상태에서 push 수신 UIApplicationStateActive: 앱 실행 중 UIApplicationStateInactive: 앱이 실행 중이지만 이벤트가 없는 상태(중단 중이거나 백그라운드로 전환 중) UIApplicationStateBackground: 앱이 백그라운드에 있음 [[[UIApplication sharedApplication] currentUserNotificationSettings] types] != UIUserNotificationTypeNone // 결과가 true.. 2021. 12. 6.
_myView vs. self.myView 참고자료의 내용 일부를 정리함 self.myView는 myView라는 프로퍼티 값을 읽어온다. (=setter/getter) 변수에 접근하는 것이 아닌 변수에 대한 값을 가져오는 것 _myView는 예전 @synthesize 사용시 `@synthesize myView = _myView`라고 사용했던것 처럼 단순히 변수의 별칭으로 사용된다고 보면 된다. 즉, self.myView는 _myView라는 변수를 사용하는 것이고, self.myView를 통해 _myView에 값을 넣는 것 결론적으로 self.myView = _myView 단, ARC 미적용 프로젝트는 예외 참고>> https://wingsnote.com/31 https://stackoverflow.com/questions/10333495/diff.. 2021. 11. 17.
arrow notation (`->`) 참고 사이트에서 필요한 부분 번역한 내용입니다. Objective-C 에서는 어떤 class 또는 struct의 프로퍼티에 값을 대입할 때 self.담길 곳 = 넣을 값 의 형식을 사용할 때 주의 오류로 self. 대신 self -> 를 사용하게끔 fix 해준다. "."의 사용은 항상 실제 메서드 호출을 수행한다. 속성이 "retain" 또는 "copy" 속성인 경우, getter / setter를 사용하면 올바른 메모리 관리를 수행할 수 있지만, 인스턴스 변수에 직접 액세스할 경우 MRC(수동 참조 카운트)에서 메모리 관리를 직접 처리해야 한다. 요약하자면, "."는 Objective-C에서 두 가지 용도로 사용된다. 왼쪽에 struct 타입이 있는 경우 struct의 필드에 액세스합니다. 왼쪽에 객체.. 2021. 11. 16.
isEqual vs. == NSArray, NSDictionary, NSString과 같은 컨테이너 클래스들은 동일성을 비교할 때 조금 다르다. NSString * str1 = @"안녕"; NSString * str2 = @"안녕"; if (str1 == str2) { // retrun YES } if (str1 isEqual:str2) { // retrun YES } 같은 "안녕"을 참조하고 있기 때문에 모두 return YES이다. (== 와 isEqual이 같은 결과를 리턴하는 이유 : https://ggool.tistory.com/72) 그러나 NSString * str1 = @"안녕"; NSString * str2 = [NSString stringWithFormat:@"%@",@"안녕"]; if (str1 == str2).. 2021. 11. 11.
Text 설정 UILabel * noSearchResultLB = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 100)]; [noSearchResultLB setText:@"안녕하세요."]; [noSearchResultLB setFont:[UIFont fontWithName:@"NotoSansOriya" size:20]]; [noSearchResultLB setTextColor:[UIColor colorWithRed:(176/255.0f) green:(190/255.0f) blue:(197/255.0f) alpha:1]]; 2021. 11. 5.