최근 Objective-C로 된 소스를 Swift로 바꾸는 작업을 하고 있다. (이젠 거의 막바지라는 것이 믿기지 않는다.)Objective-C에서는 C와 동일한 타입으로 사용할 수 있었지만, Swift에서는 C의 unsigned char, unsigned int 값들을 UInt8, UInt32로 포팅하여 사용해야 했다. 그러던 중 ... ... arithmetic overflowThread 1: Swift runtime failure: arithmetic overflow 이 오류를 만났다.해당 오류는 반드시 발생하는 것은 아니었다. (로직이 그랬음) 에러 문구에서 알 수 있듯이, 산술 오버플로우로 타입에서 처리할 수 있는 값 이상을 넣었기 때문에 발생했다. 문제가 있었던 변수는 UInt8 타입으로, ..
Swift와 Objective-C에서 Swizzling과 Hooking은 비슷한 기술이지만, 다른 목적과 구현 방식을 가지고 있다. Swizzling런타임에서 method 구현을 변경하는 것을 의미하며, 일반적으로 클래스의 method를 다른 method로 교체하는 것을 의미한다. 이를 통해 기존의 method 동작을 수정하거나 확장할 수 있다.Swift와 Objective-C가 동적으로 동작하기 때문에, Swizzling이 가능하다. (정적으로 동작하는 C / C++과 같은 경우에는 method Swizzling이 불가능)Swizzling은 주로 디버깅이나 런타임에서의 동작 변경에 사용된다.+ (void)swizzleMethod { Class class = [self class]; ..
기초 문법 .h 헤더 파일과 .m 구현 파일 2개가 존재한다. 헤더 파일에는 클래스나 변수, 메서드를 선언해 주고 .m 파일에서 자세한 구현 사항을 기술한다. 한 문장이 끝날 때마다 세미콜론을 사용해야 한다. #import #import "headerSomethingHeader.h" #import 외부 라이브러리, 프레임워크, 프로젝트 내에 있지만 다른 파일에 선언된 클래스를 사용할 때 import해 준다. 구현 파일에서도 자신의 헤더 파일을 반드시 import 해야 하며, .h 파일에서 import 한 내용은 .m 에서 import할 필요가 없다. 각각 파일별로 관리된다고 보면 되며, C언어와 비슷하게 사용할 클래스가 있다면 import하여 사용한다. 클래스 선언 @interface Person : N..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.