300x250 전체 글241 스트링 인터닝(String Interning) 문자열은 메모리 영역에 같은 상수를 참조하여 위치하게 되는데 이를 string interning 이라고 한다. 컴파일 시, 단순히 해당 문자열을 가져오는 것이 아니라 메모리에 존재하는 문자열 중 같은 문자열이 있는지 없는지 판단하여 리턴하게 된다. 같은 문자열이 있다면 그 주소값을 참조하게 되고, 같은 문자열이 없다면 새로 영역을 할당하여 그 주소값을 가져오게 된다. NSString * str1 = @"안녕"; NSString * str2 = @"안녕"; 이 경우, 둘은 같은 "안녕" 이라는 문자열이 선언되어 있으므로, 같은 주소값을 참조하게 된다. 참고: https://cornswrold.tistory.com/265 2021. 12. 15. 용어 사전 문자열 리터럴(String Literal) 큰따옴표(")에 둘러쌓인 문자의 연속체를 의미한다. 핫픽스(Hotfix) 버그의 수정이나 취약점 보완 또는 성능 향상을 위해 '긴급히' 배포되는 패치 브레이킹 체인지(Breaking Change) 호환성을 지원하지 않게 되는 변경 즉, 변화로 인해 기존의 코드가 제대로 동작하지 않거나 다시 빌드를 해야하는 경우(예, 라이브러리의 인터페이스가 바뀔 경우) 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. 네트워크 통신 주의점 a 테이블뷰가 있고 셀의 상세 화면이 있다 셀을 클릭하면 상세화면으로 넘어간다 상세화면의 데이터는 테이블뷰가 있는 컨트롤러에서 넘겨준다 이 데이터를 상세화면에 뿌려줄때 깔끔하게 바로 보여주려면 (빈값이나 완전히 로드되지 않은 화면이 보이지 않도록) 테이블뷰가 있는 컨트롤러에서 상세화면에 필요한 네트워크 통신을 미리 해주어야 한다. 단, 통신 전과 데이터가 달라질 가능성이 있다면 이러한 설계는 조심할것 2021. 12. 3. _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. 이전 1 ··· 18 19 20 21 22 23 24 ··· 27 다음 300x250