글쓴이 보관물: xeozin

Xcode 에서 Comment

코드를 정리하기 위해서 많이 쓰는 주석 형태를 정리해봤다. 추후에 형태별로 정리가 필요하다.

/*!
 @enum
 @constant
 @constant
 @struct
 @field
 @field
 @class
 @header
 @function 일반 C 함수
 @return 반환값
 @typedef 타입 값
 @constant 상수 1
 @constant 상수 2
 @abstract 개요 Creates a new web view.
 @param 변수 1
 @param 변수 2
 @result 반환값
 @discussion 상세설명 The web view returned must be created with the specified configuration. WebKit will load the request in the returned web view.
 */

Objective-C

header

/*!
 @header Utils
    유틸리티 모음
 */

Method

#pragma mark - AES256

/*!
 @abstract AES256 대칭형 암호화
 @param pinNum 대칭키
 @param data 암호화될 데이터
 @result 암호화된 데이터
 @discussion
    data의 경우 보통 문자열로 NSUTF8StringEncoding으로
    엔코딩된 NSData를 사용한다.
 */
+ (NSData*)AES256Encode:(NSString*)pinNum data:(NSData*)data;

Property

/*!
 @abstract 회원가입 상태 (신규, 재발급)
 @discussion
    CRT_0000 : 입력하신 휴대폰 번호로 인증번호를 전송하였습니다.
    CRT_0001 : 일치하는 정보가 없습니다.
    CRT_0002 : 이미 인증번호를 전송했습니다.
    CRT_0003 : 인증번호 전송에 실패하였습니다.
    CRT_4001 : 신원확인에 실패하였습니다.
    CRT_4002 : 이미 회원으로 등록된 정보입니다.
 */
@property (nonatomic, retain) NSString *joinState;

Define

/*!
 @defined TEST_SERVER_BOOL
 @discussion 1:테스트서버, 0:실서버
 */
#define TEST_SERVER_BOOL 1

 

Oracle SQL Developer JDK 경로 수정

Oracle SQL Developer 를 설치하고 9.1 버전이하에서 동작한다는 경고문구를 보고 어떤 일이 일어나는지 보려고 일부러 JDK 11 버전 경로를 주었다. 예상되로 동작하지 않았고 원래대로 경로를 변경해 주려고해도 도무지 찾을 수가 없었다. 인터넷에서 검색한 결과 다음 문서를 수정해서 고칠 수 있었다.

C:\Users\[사용자명]\AppData\Roaming\sqldeveloper

다음과 같은 항목을 수정하면 된다. bin 까지 쓰지 않으니까 javafx 경고를 표시했었다. bin까지 써주는게 좋겠다.

SetJavaHome C:\sdks\openjdk-1.8.0.191-1\bin

 

UITapGestureRecognizer 와 UITableView didSelectRowAtIndexPath 같이 사용하기

UIGestureRecognizer 를 이용해 텍스트 필드 이외의 영역을 터치하면 키보드가 사라지도록 처리하는 도중 테이블 뷰를 선택하면 이벤트가 작동하지 않았다. 때문에 방법을 찾던 중 델리게이트를 구현해서 테이블 뷰가 선택되면 해당 이벤트를 건너뛰도록 해결하였다.

- (void)addTapGestureEvents {
    singleFingerTap =
    [[UITapGestureRecognizer alloc] initWithTarget:self
                                            action:@selector(emptyTap:)];
    singleFingerTap.delegate = self;
    [self.view addGestureRecognizer:singleFingerTap];
}

#pragma mark UIGestureRecognizerDelegate methods

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([touch.view isDescendantOfView:self.table]) {
        
        // Don't let selections of auto-complete entries fire the
        // gesture recognizer
        return NO;
    }
    
    return YES;
}

 

UIKeyboardWillShowNotification 이벤트를 이용해 테이블 뷰의 컨텐츠 영역 줄이기

iOS 에서 키보드가 올라오면 테이블 뷰 또는 스크롤 뷰의 높이를 키보드 높이 만큼 빼서 적용해야 하는데 이 경우 contentInset 에 해당 bounds 를 넣어주면 높이만큼 줄어든다.

- (void)addKeyboardEvents {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShowNoti:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardHideNoti:) name:UIKeyboardWillHideNotification object:nil];
}

키보드가 보일 때 이벤트

- (void) keyboardShowNoti:(NSNotification *)noti
{
    NSDictionary* info = [noti userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
    self.table.contentInset = contentInsets;
    self.table.scrollIndicatorInsets = contentInsets;
}

키보드가 사라질 때 이벤트

- (void)keyboardHideNoti:(NSNotification*)noti
{
    UIEdgeInsets contentInsets = UIEdgeInsetsZero;
    self.table.contentInset = contentInsets;
    self.table.scrollIndicatorInsets = contentInsets;
}

 

Xcode 프로젝트에서 CocoaPods 제거하기

다른 사람이 작업한 소스를 전달받을 일이 있어 git clone을 했는데 .gitignore 설정이 제대로 되지 않아서인지 프로젝트 빌드가 되지 않았다. 때문에 다음과 같이 CocoaPods를 제거하고 의존도를 다시 설정하여야 했다.

sudo gem install cocoapods-deintegrate cocoapods-clean
pod deintegrate && pod clean
rm Podfile

 

macOS 업데이트시 git 오류 해결

맥을 Mojave 10.14 버전으로 업데이트 한 뒤에 pod install 을 하려고 하니 다음과 같은 에러가 발생했다. xcrun: error: invalid active developer path … 

검색 결과 Xcode Command Line Tools 의존성 이슈라고 한다. git 버전 체크를 통해 해당 이슈가 발생하는지 확인 할 수 있다.

$ git --version
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

xcode-select 명령어를 이용해서 Xcode Command Line Tools 만 설치 할 수 있다.

$ xcode-select --install
.
..
...
....

$ xcode-select -v
xcode-select version 2343.

 

좌표에 따른 이미지 색상 값 추출

특정 좌표의 색상 값을 알고 싶을때 사용한다.

- (UIColor*)pixelColorInImage:(UIImage*)image atX:(int)x atY:(int)y {
    
    CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
    const UInt8* data = CFDataGetBytePtr(pixelData);
    
    int pixelInfo = ((image.size.width * y) + x ) * 4; // 4 bytes per pixel
    
    UInt8 red   = data[pixelInfo + 0];
    UInt8 green = data[pixelInfo + 1];
    UInt8 blue  = data[pixelInfo + 2];
    UInt8 alpha = data[pixelInfo + 3];
    CFRelease(pixelData);
    
    UIColor *returnColor = [UIColor colorWithRed:red  /255.0f
                                           green:green/255.0f
                                            blue:blue /255.0f
                                           alpha:alpha/255.0f];
    
    return returnColor;
}

 

Xcode 기본 프로그램으로 설정

OSX 10.5 부터 Xcode가 여러버전 설치를 지원한다. 설치시에 Xcode 기본 디렉터리인 /Developer 가 아닌 다른 폴더나 볼륨에 설치해도 개별적으로 동작한다. 폴더 이름도 Developer 가 아니라도 상관없다. 하지만 하위 폴더의 구조는 변경하면 안된다.

여러가지 버전의 Xcode 를 설치할 경우 특정 버전을 기본값으로 설정하기 위한 터미널 명령어로 sudo 권한이 필요하다.

sudo xcode-select -switch <path/to> xcode.app