336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

애플 계열의 프로그램을 만들다 보면 정말 공포의 대상인 리뷰가 있습니다.

리젝 되는 상황에서 메세지를 정리 한 포스트이고 실제로 제가 당한 리젝 사유를 정리 했기때문에 정보가 매우 제한적일 수 있습니다. 

앞으로도 리젝을 당할때마다 계속 추가 될 내용입니다. 


3.1 - Apps or metadata that mentions the name of any other mobile platform will be rejected

해석) 다른 모바일 플랫폼의 이름이 언급된 앱 또는 메타 데이터는 리젝됩니다.

제 상황) 공지사항에 안드로이드 플랫폼 이름이 노출 되어있어서 리젝된 경우입니다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

이미지에 원하는 색으로 색칠을 해주는 코드입니다.

같은 아이콘이지만 여러가지 색으로 바꿔줘야 할때 유용 할 것 같습니다.


(Objective-C 코드)

1
2
3
4
5
6
7
8
9
10
UIImage *image = [UIImage imageNamed:@“your_img_name”];
CGRect rect = CGRectMake(00, image.size.width, image.size.height);
UIGraphicsBeginImageContextWithOptions(rect.size, NO, image.scale);
CGContextRef c = UIGraphicsGetCurrentContext();
[image drawInRect:rect];
CGContextSetFillColorWithColor(c, [UIColor blackColor].CGColor);
CGContextSetBlendMode(c, kCGBlendModeSourceAtop);
CGContextFillRect(c, rect);
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
cs


(Swift 코드)

1
2
3
4
5
6
7
8
9
10
let image = UIImage(named: "your_img_name")
let rect = CGRectMake(00, image!.size.width, image!.size.height)
UIGraphicsBeginImageContextWithOptions(rect.size, false, image!.scale)
let c : CGContextRef = UIGraphicsGetCurrentContext()!
image?.drawInRect(rect)
CGContextSetFillColorWithColor(c, UIColor.blackColor().CGColor)
CGContextSetBlendMode(c, CGBlendMode.SourceAtop)
CGContextFillRect(c, rect)
let resultImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
cs


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

앱을 만들때 세로모드만 사용하여 가로모드를 막아야 할 경우 필요한 코드 입니다.

가르모드가 필요없는 뷰컨트롤러에 넣어 주면 적용됩니다.


(Objective-C 코드)

1
2
3
4
- (NSUInteger) supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait; //세로 화면만 허용
}
cs

UIInterfaceOrientation 속성입니다.

UIInterfaceOrientationMaskPortrait //세로 화면만 허용

UIInterfaceOrientationMaskAll //전체 화면 허용

UIInterfaceOrientationMaskPortraitUpsideDown //거꾸로만 허용

UIInterfaceOrientationMaskLandscape; //가로화면만 허용


(Swift 코드)

1
2
3
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
        return UIInterfaceOrientationMask.Portrait
}
cs

UIInterfaceOrientation 속성입니다.

UIInterfaceOrientationMask.Portrait //세로 화면만 허용

UIInterfaceOrientationMask.All //전체 화면 허용

UIInterfaceOrientationMask.PortraitUpsideDown //거꾸로만 허용

UIInterfaceOrientationMask.Landscape //가로화면만 허용

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

위젯을 만들때 왼쪽 여백 조금 남습니다.

디자인상 왼쪽 여백 필요 하시면 그냥 쓰시면 되지만 또 디자인상 불필요할때도 있습니다.

그 왼쪽 여백을 없애주는 코드 입니다. 그냥 추가만 해주시면 되요!


(Objective-C 코드)

1
2
3
-(UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets {
    return UIEdgeInsetsZero
}


cs

(Swift 코드)

1
2
3
func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
    return UIEdgeInsetsZero
}
cs


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

최상단에 있는 rootViewController를 가지고 오는 코드입니다.

(Objective-C 코드)

1
UIViewController * viewController = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
cs

(Swift 코드)

1
let viewController: UIViewController = UIApplication.sharedApplication().delegate!.window!!.rootViewController!
cs


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


안녕하세요! 저는 스타트업 회사에 몸을 담고 IOS개발을 하고 있습니다.

교롭게도 안드로이드 개발을 공부하다가 이번 프로젝트를 시작하면 IOS개발을 작년 5월쯤 시작했습니다. 한달뒤 애플은 스위프트를 기습적으로 발표를 하고 많은 사람들이 놀랬던 기억이 있습니다. 그때 당시의 고민이 스위프트로 개발 해야 할까 아님 이미 오랫동안 사용 되었던 오브젝티브-C를 통해 개발을 해야 할까라는 많은 고민을 했습니다. 하지만 저를 가르쳐주는 사람도 없었고 결국은 그냥 예제등 많은 시간동안 축척 되어있는 오브젝티브-C를 이용해서 개발을 하자 해서 지금 까지 오브젝티브-C를 통해 개발을 하고 있습니다. (살짝 후회가 되기도 합니다.) 

애플이 처음으로 발표를 하고 1년5개월 정도 되었고 2.0버전까지 발표를 했으며, 오픈소스화 발표까지 해버렸습니다. 오브젝티브-C가 오랫동안 애플의 대표적인 언어로 활용 되어 왔기때문에 당장은 스위프트와 공존을 하게 되겠지만 시간이 지나면 지날수록 스위프트는 중요 해지는 당연한 수순일까 해서 더 늦기 전에 스위프트를 공부하고 그 공부를 바탕으로 포스팅을 할 생각입니다. 물론 시간은 걸리겠지만 지금 하고 있는 프로젝트도 서서히 스위프트로 교체를 해야되지 않을까 싶습니다. 


위키백과 에서는 스위프트 언어를 이렇게 정의 하고 있습니다.

스위프트(Swift)는 애플의 IOS와 OS X를 위한 프로그래밍 언어로 2014년6월2일 애플 세계 개발자 회의에서 처음 소개되었다. 기존의 애플 운영체제용 언어인 오브젝티브-C와 함께 공존할 목적으로 만들어졌다. 오브젝티브-C와 마찬가지로 LLVM으로 빌드 되고 같은 런타임을 공유한다. 클로저, 다중 리턴 타입, 네임스페이스, 제네릭스, 타입 유추 등 오브젝티브-C에는 없었던 현대 프로그래밍 언어가 갖고 있는 기능을 많이 포함 시켰으며 코드 내부에서 C나 오브젝티브-C 코드를 섞어서 프로그래밍 하거나 스크립트 언어 처럼 실시간으로 상호 작용하며 프로그래밍 할 수도 있다. (출처 : 한국 위키 백과)


지디넷에서 발표 당시 기존 애플 운영체제(OS) 기반 앱 개발자들이 염두에 둬야 할 항목 10가지를 다음과 같이 정리했다.

첫째, 스위프트는 'C가 빠진 오브젝티브C'같은 언어다. 이 새로운 언어는 과거 'C이긴 C인데 이상한 C'라 불리던 오브젝티브C의 문제를 보완했다는 평가다. 이는 애플이 스위프트를 '빠르고 안전하고 인터랙티브한' 프로그래밍 언어로 묘사했다는 점에서 짐작 가능하다.

둘째, 스위프트는 애플 iOS와 OS X 환경에서 작동한다. 단지 iOS 기기에서 돌아가는 앱을 개발하는 용도로 만들어진 게 아니다. 개발자들은 OS X에서 돌아가는 앱을 만들 때도 오브젝티브C 대신 스위프트를 사용할 수 있다. 애플은 자사 플랫폼의 '주력 프로그래밍 언어'라는 지위를 오브젝티브C에서 떼어내려는 듯하다.

셋째, 스위프트는 빠르다. 애플이 근거로 삼은 자료에 따르면 스위프트는 컴플렉스 오브젝트 정렬이나 RC4 암호화같은 작업을 수행할 때 파이썬이나 오브젝티브C를 넘어서는 처리 성능을 발휘한다. 이는 개발자들이 앱을 만들 때 코드 최적화에 쏟아야 하는 시간을 줄이고 개발에 더 전념케 해준다. 

넷째, 스위프트는 언어 스펙에 다중 리턴 타입, 클로저, 제네릭스, 타입 인터페이스, 네임스페이스 등을 포함한다. 간단히 말해 현대적인 언어에서 지원하는 주요 기능들을 대거 흡수했다는 얘기다. 개발자들은 이로써 앱 개발 언어를 오브젝티브C에서 스위프트로 바꾸기 위해 특별히 필요로하는 프로그래밍 언어 특성을 포기할 필요가 없다.

다섯째, 스위프트는 개발자가 오브젝티브C와 C 언어를 함께 써 온 기존 방식에 그대로 도입할 수 있기 때문에, 개발자들의 업무흐름을 깨뜨리게 하지 않는다. 개발자들은 스위프트를 쓰기로 했더라도 필요하다면 여러 언어를 혼합한 앱을 개발할 수 있다.

여섯째, 스위프트는 기존 애플의 코코아 및 코코아터치 프레임워크 개발환경에 그대로 적용 가능하다. 스위프트 역시 동일한 LLVM컴파일러를 사용해 만들어졌다. 또한 동일한 옵티마이저와 오토벡터링, 동일한 ARC메모리관리자, 오브젝티브C와 동일한 런타임을 사용한다.

일곱째, 스위프트는 디버깅이 쉽다. 통합개발환경(IDE) X코드(Xcode)의 디버깅 콘솔은 스위프트 언어의 인터랙티브 버전을 포함하고 있다. '인터랙티브 플레이그라운드'라 부르는 기능인데, 이는 개발자가 스위프트 문법을 검증하고 스크립트언어처럼 구동중인 앱과 상호작용하면서 그대로 새로운 알고리즘을 고안하거나 코드를 써넣는 식으로 개발이 가능하게 해준다. 이는 X코드 콘솔이나 터미널모드에서 사용 가능하다.

여덟째, 스위프트는 안전하지 않은 코드를 걷어낼 수 있게 해준다. 애플은 안전하지 않은 코드의 전체 클래스를 제거하는 방향으로 스위프트를 설계해 왔다. 변수들은 항상 사용되기 전에 선언된다. 배열과 정수는 오버플로 현상에 대비해 확인을 받는다. 메모리는 자동으로 관리된다.

아홉째, 스위프트는 애플이 기존 오브젝티브C에 익숙한 개발자들이 개발 언어를 바꿀 수 있도록 만들어졌다. 이를테면 앞서 오브젝티브C로 만들어진 앱의 코드를 스위프트 기반으로 쉽게 변환할 수 있도록 했다는 평가다. 이 과정은 새 개발 언어의 코드를 더 구조화되고 논리적으로 만들고 성능도 높여 준다.

열째, 스위프트는 당장 사용 가능하다. 개발자들은 애플이 공개한 X코드를 즉시 내려받을 수 있다. 또한 아이튠스 앱스토어와 맥 앱스토어를 통해 내려받을 수 있는 '아이북스' 전자책 형태로 공개한 스위프트 프로그래밍 언어 개발용 전자책도 공개돼 있다.




이렇듯 애플은 오랫동안 준비 하고, 오브젝티브C를 대처 하기 위한 언어로 스위프트를 내세웠기 때문에 OS X, IOS 애플리케이션 개발자들에게는 필수 코스가 되지 않을까 싶습니다. 공부를 하면서 스위프트에 대해서 포스팅을 하겠습니다. 그리고 스위프트를 이용한 다른 프로젝트도 같이 진행할 예정이고요. 일을 하고 하루에 한두시간정도 투자해서 하는 거라 더디고 더디고 굼벵이가 지나가는것보다 느릴수 있지만 조금씩이나마 블로그를 채워 나가도록 하겠습니다. 잘 부탁드립니다.


ps. 물론 지금은 휴가중이라 조금만 쉬고 공부를 시작하는데로 올리겠습니다...ㅎㅎ;


+ Recent posts