본문 바로가기

분류 전체보기

(67)
[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에 동작하는 안드로이드 스튜디오를 실행할 수 있다.
[Swift] 문자열 자르기 - substring Swift 의 문자열 자르기(substring) 기능은 매우 귀찮다! var str = "Hello, Swift Language" Swift에서 문자열을 자르는 함수 - substring은 String.Index 를 사용하는데, 이게 임의의 값을 설정할 수가 없다!advance 함수를 이용해서 일정 거리(distance)만큼 밀어버린 인덱스(String.Index)를 생성해서 잘라내야 한다. let startIndex = advance(str.startIndex, 1)let endIndex = advance(str.startIndex, 5)str.substringToIndex(endIndex) 다음은 범위(Range)로 문자열을 자르는 코드다. let range = startIndex...endIndex..
[Swift] 파일 접근하기 플레이 그라운드로 스위프트 코드를 작성하다, 이미지 파일 참조가 안 되는 현상이 발생했다. 분명 스위프트 코드와 같은 디렉토리에 파일을 복사하고 상대 경로로 접근하려니, 접근이 안된다. let fm : NSFileManager = NSFileManager.defaultManager() let filePath = "./image1.png" fm.fileExistsAtPath(filePath) 스위프트 파일이 저장된 위치와 스위프트 파일이 실행되는 경로가 다른 점이 그 원인이다. 실행 디렉토리를 찾아보자! fm.currentDirectoryPath 다음과 같이 라이브러리 폴더가 찍힌다. /Users/USER/Library/Containers/com.apple.dt.playground.stub.OSX.PLAY..
[SWIFT] JSON 파싱 예제 코드 json 파싱 예제 코드 플레이그라운드에서 json을 파싱해서 제목과 가수 이름만 출력하도록 작성했다. json은 애플의 25 Top Song RSS의 json 버전을 이용. 다음은 코드. Objective-C 에 비해서 타입 체크가 너무 강해졌다.let urlStr = "http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/topsongs/limit=25/json" let url = NSURL.URLWithString(urlStr)let data = NSData(contentsOfURL: url)var error : NSError? // 반환 타입이 AnyObject!let result : AnyObject = NSJSONSerializat..
비율(Aspect Ratio) 제약사항 : iOS7.1 변경사항 iOS7과 iOS7.1의 변경 사항 - Aspect Ratio Constraint 다음은 iOS7용 인터페이스 빌더의 모습이다. 간격(Spacing)이나 크기(Width, Height) 등을 설정할 수 있다. 다음 그림은 iOS7.1b 용 Xcode(5.1)의 인터페이스 빌더의 모습이다. Aspect Ratio를 설정할 수 있다. 다음 그림은 비율 제약조건의 인스펙터의 모습이다. 코드로 해야 하는 부분이 인터페이스 빌더로도 가능해졌다. 그런데 문제는 스토리보드 파일 호환이 안된다.
[PhoneGap] 안드로이드의 기기 전화 번호 얻어오기 안드로이드는 기기의 전화번호를 얻어올 수 있지만 안드로이드 코드를 작성해야 하지만, 이를 누군가가 플러그인으로 사용할 수 있도록 만들어놨다. 폰갭 플러그인 사이트는 아래와 같다. https://github.com/macdonst/TelephoneNumberPlugin 폰갭 프로젝트에서 콘솔을 이용해서 아래와 같이 플러그인을 설치한다.cordova plugin add com.simonmacdonald.telephonenumber 이 플러그인을 설치하면 자바 파일과 몇 가지 설정이 자동으로 변경된다. 안드로이드 프로젝트의 소스 폴더의 com.simonmacdonald.cordova.plugins 패키지에 TelephoneNumber 라는 java 파일이 추가된다. res/xml/config.xml 에는 플러..
Xcode5 beta5 버전 : 콘솔에 AssertMacros로 넘치는 현상 발생 Xcode5 베타5 버전을 사용하는데 아래와 같이 콘솔에 AssertMacro가 계속 출력되는 현상이 발생. 콘솔로 데이터를 확인하는 상황에서 상당히 귀찮은 일이다. 개발자 포럼에서 찾은 해결 방법 - main.c 를 아래와 같이 수정한다. #import "AppDelegate.h" typedef int (*PYStdWriter)(void *, const char *, int);static PYStdWriter _oldStdWrite; int __pyStderrWrite(void *inFD, const char *buffer, int size){ if ( strncmp(buffer, "AssertMacros:", 13) == 0 ) { return 0; } return _oldStdWrite(inFD, ..