본문 바로가기

전체 글

(103)
[iOS] 웹뷰(WKWebView)에서 네이티브로 메세지 전달. 에러 수정 기록 웹킷의 웹뷰에서 window.webkit.messageHandlers를 이용하면 네이티브 영역(Swift 코드 부분)으로 메세지를 전달할 수 있다. WKUserContentController 를 이용해서 메세지의 이름과 메세지가 전달될 때의 처리할 대상(self)를 등록해야 한다. 다음과 같이 작성하면 될 줄 알았다..... let contentController = WKUserContentController() contentController.add(self, name: "hello") webView.configuration.userContentController = contentController 웹뷰에서 webkit.messageHandlers를 통해서 보내는 메세지는 다음과 같이 작성한 메소드에 ..
macOS 카탈리나 - Xcode11 - ReactNative SwiftUI도 해볼 겸 카탈리나(beta 9)를 설치했다. IP 주소 모바히까지는 와아파이 아이콘을 옵션 + 클릭하면 IP 주소가 바로 나타났는데, 카탈리나를 설치하니 더이상 안나온다. 네트워크 환경설정에 가면 나오기는 하는데, 한 번 더 클릭해서 들어가야 하므로 조금(많이) 불편하다. CocoaPods brew를 이용해서 cocoapods를 설치해서 사용했다. 카탈리나 설치 후 cocoapods 설치는 성공했는데 실행하면 다음과 같은 에러가 발생한다. /usr/local/bin/pod: /usr/local/Cellar/cocoapods/1.7.5/libexec/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: b..
[iOS] Swift 1.2 swift로 진행하던 프로젝트를 날 잡고 Swift 1.2로 변경했다. 수정한 내용을 정리해본다. 전역 함수 변경 countElement 함수는 count로 바뀌었다. Objective-C 타입 호환 Swift 1.1 에서는 NSString과 String 타입 사이에 자동으로 타입 변환이 가능(bridging)했었다. var str1 : NSString = "NSString String Val" var str2 : String = str1 Swift 1.2 부터는 NSString과 String 사이에 암시적 타입 변환이 지원되지 않는다. 다음과 같이 as를 이용해서 타입 변환 코드를 작성해야 한다. var str1 : NSString = "NSString String Val" var str2 : Stri..
[iOS] 노티 옵저버 등록과 해제 노티에 등록된 감시 객체가 삭제되지 않는 문제가 발생! 수 시간의 디버깅 끝에 원인을 찾았다. 노티 센터에 등록한 옵저버와 옵저버를 삭제하는 코드에서의 옵저버 객체가 달랐던 것이다. 감시 객체를 삭제하는 코드는 다음과 같이 작성했다. 즉 self - 뷰 컨트롤러가 옵저버라고 생각하고 짰는데.. 옵저버를 블록 객체로 등록했었다. NSNotificationCenter.defaultCenter().removeObserver(self) 이 기회에 좀 정리해본다. == 객체를 옵저버로 사용 노티 발생 여부를 감시하는 옵저버(Observer)를 등록하는 방법은 다음과 같다. 이 메소드에서 노티 센터에 등록되는 옵저버는 observer 파라미터의 객체다. // 옵저버 객체 : observerfunc addObserv..
[Node.js] 서버 IP 얻기 서버 IP 주소 얻기function getIPAddress() { var interfaces = require('os').networkInterfaces(); for (var devName in interfaces) { var iface = interfaces[devName]; for (var i = 0; i < iface.length; i++) { var alias = iface[i]; if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) return alias.address; } } return '0.0.0.0'; } from http://stackoverflow.com/questions/3653065/get-..
[iOS] 뷰의 아웃렛 작성시 weak? strong? 스토리보드를 이용해서 뷰의 아웃렛을 작성할 때 다음 그림처럼 Storage 속성에서 Strong과 Weak 중 하나를 선택해야 한다. Strong은 객체를 소유해서 레퍼런스 카운트가 증가하는 프로퍼티고 Weak은 객체를 소유하지 않는 포인터다. Swift 에서는 다음과 같이 생성된다. @IBOutlet var strongView: MyView! @IBOutlet weak var weakView: MyView! 오브젝티브 씨에서는 다음과 같이 생성된다. @property (strong, nonatomic) IBOutlet MyView *strongView; @property (weak, nonatomic) IBOutlet MyView *weakView; Strong으로 선택하면, 뷰 컨트롤러에 작성한 프로..
Java8과 안드로이드 스튜디오 안드로이드 스튜디오는 Java6가 설치돼있어야 동작한다. Java6가 설치돼있지 않으면 다음과 같은 메세지가 나타나고 실행이 안 된다. 현재 java의 최신버전인 java8(1.8)이 설치돼있어도 실행되지 않는다. 안드로이드 스튜디오의 환경 설정 파일을 조금 수정하면 java8에서 동작한다. 다음 그림과 같이 안드로이드 스튜디오 실행 파일에서 마우스 오른쪽 버튼을 누르고 패키지 내용 보기를 선택한다. 패키지 내부는 다음과 같은 폴더 구조다. Info.plist를 열어서 java 버전을 변경해야 한다. JVMOptions 항목의 JVMVersion 을 다음과 같이 1.8*로 변경한다. 이제 java8에 동작하는 안드로이드 스튜디오를 실행할 수 있다.
맥 퓨전 드라이브 해제 맥 미니(2011)에 SSD는 256G, HDD는 500G를 퓨전 드라이브로 설정(구형맥에 퓨전 설정하기)해서 사용하다가 최근에 속도가 느려지는 느낌을 받았다. == 퓨전 드라이브 해제 퓨전 드라이브를 해제하고 다음과 같이 사용할 계획 SSD : 시스템 파일과 애플리케이션 설치용 HDD : 문서, 음악, 동영상 퓨전 드라이브를 해제(관련 링크)하고 SSD에 요세미티를 설치했다. Trim 활성화도 몇번의 먹통끝에 간신히 성공.(관련 링크) 사용자 폴더를 HDD로 생성하도록 설정했다. == 사용자 폴더 변경하기 시스템 환경 설정 -> 사용자 및 그룹에서 사용자 선택. 하단의 잠김을 풀고 사용자를 선택하고 오른쪽 버튼을 누르면 다음과 같이 '고급 옵션'이 나타난다. 고급 옵션에서 홈 디렉토리를 HDD의 경로로..