본문 바로가기
728x90

iOS106

자동 문자 입력 메세지 앱이 열리고 원하는 번호로 원하는 내용이 바로 입력되어 있는 상태 구현 1. MessageUI를 import 한다 2. 해당 ViewController에 MFMessageCompseViewControllerDelegate를 채택한다. 3. 메세지 앱으로 연결할 버튼을 하나 생성하고 4. 버튼의 액션은 @IBAction func sendMessage(_ sender: UIButton) { let messageComposer = MFMessageComposeViewController() messageComposer.messageComposeDelegate = self if MFMessageComposeViewController.canSendText(){ messageComposer.recipients.. 2022. 1. 6.
API 통신 API 통신을 할 때, HTTP body에 노출되면 안되는 정보는 haeder를 통해 전달하는 것이 좋다. (api 서버 주소나 인증키 같은) NSURL *url = @"url"; NSURLSession *session = [NSURLSession sharedSession]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; [request setHTTPMethod:@"GET"]; [request setValue:@"auth value" forHTTPHeaderField:@"Authorization"]; [request setValue:@"application/json" forHTTPHeaderField:@"Cont.. 2022. 1. 4.
Xcode 반자동 배포 - 전처리문 이용 전처리문을 사용한 초간단 Xcode 반자동 배포 #define ReleaseServer_URL "https://release.com" #define DebugServer_URL "https://debug.com" #ifdef RELEASE #define SERVER_URL ReleaseServer_URL #else #define SERVER_URL DebugServer_URL #endif 이런식으로 define 하여 API 호출 시, URL을 define 변수를 이용하면 빌드 스키마에 따라 자동으로 서버URL을 반영 시킬 수 있다. 이렇게 하면 완전 자동은 아니지만 배포 시 서버 URL을 테스트용으로 올리는 실수는 없앨 수 있다. 다른 방법도 다양하다 : https://leechanho.tistory.c.. 2021. 12. 23.
스트링 인터닝(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.
네트워크 통신 주의점 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.