Array 와 Set의 차이


거의 비슷한 형태의 Array와 Set!!  무슨 차이일까???

이것도 코드로 확인해보자!!!!


1
2
3
4
5
6
7
8
9
10
//Set의 경우 배열과 구분짓기 위해 타입(Set)을 명시해줘야한다!!!!
var testArray = ["사과""배""귤""바나나"]
var testSet : Set = ["사과""배""귤""바나나"]
 
 
testArray.insert("사과", atIndex: testArray.count)
//=> ["사과", "배", "귤", "바나나", "사과"]
 
testSet.insert("사과")
//=> ["사과", "배", "귤", "바나나"]
cs


testArray는 "사과"가 추가되었지만 testSet는 추가되지 않았다.
왜??
Set은 중복된 값을 허용하지 않기 때문이다.

한마디로 Array는 중복 여부와 상관없이 아무 값이나 넣을 수 있고
Set은 모든 값들이 고유한 값으로 채워지도록 되어있는 형태이다.


구문 레이블


반복문이나 조건문에 이름을 달자!!! 근데 왜??


말이 필요없다.  코드로 확인해보자.


1
2
3
4
5
6
7
8
9
10
label_1 : for i in 1...9
{
    label_2 : for j in 1...9
    {
        if j == 5
        {
            break label_1
        }
    }
}
cs

j 가 5가 되면 break로 for문을 빠져나가게 되는데 구문 레이블을 사용하지 않을 경우 다시 바깥에 있는 for문을

수행해야 한다.

하지만 구문레이블을 사용하면 바깥에 있는 label_까지 바로 빠져나갈 수 있다.


짱좋음!!



'개발 > Swift' 카테고리의 다른 글

#available  (0) 2015.12.22
extention  (0) 2015.12.12
willSet didSet  (0) 2015.12.11

#available


버전별 사용자 처리를 위한 키워드라고 할 수 있겠다.


유니티를 예로 들자면 각 유니티 버전에 대한 타입 분류를 


1
2
3
4
5
#if UNITY_4_6_5
    //4.6.5 버전 사용자 처리
#else
    //그 외 버전 사용자 처리
#endif
cs


이렇게 c# 전처리 define을 사용해서 처리할 수 있는데
스위프트는 #available 키워드로 코드상에서 좀더 세밀하게 처리가 가능하다.

1
2
3
4
5
6
7
if #available(iOS 9*)
{
    //ios 7 버전 사용자 처리
}else{
    //그 외 버전 사용자 처리
}
 
cs

또한, 여러개의 플랫폼을 구분지어서 체크할수도 있다.

#available(iOS 9, OSX 10.11.2, *)

여기서 주의할점은 항상 마지막엔 *을 넣어서 입력이 끝났음을 알려주어야 한다.



'개발 > Swift' 카테고리의 다른 글

구문 레이블  (0) 2015.12.22
extention  (0) 2015.12.12
willSet didSet  (0) 2015.12.11

xcode 라인 삭제


지금이 때가 어느때인데 말야

라인 삭제가 안되는 에디터라니!!!  이게 말이됨???!!


안되면 되게하자..

(참고로 난 이클립스 + 모노디벨롭 + 기타등등의 모든 에디터에서 라인 삭제는 command + d로 사용하고 있음)


1) xcode 종료 후 Finder > 이동 > 폴더로 이동 선택





2) 아래 링크 복 붙 후 이동 버튼 ㄱㄱ!!

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist



3) 발견한 파일을 다른 곳으로 복제

(해당 파일은 바로 열어서 수정이 안되기 때문에 복제 후 수정 해야함)



4) 텍스트 편집기로 열어서 <key>Deletions</key> 를 찾는다.




5) 제일 마지막 부분에 아래 항목 추가

<key>Delete Line</key>

<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>




6) 저장 후 저장된 파일을 원래 있던 위치 

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist 에 붙여넣기!!

(주의!! [대치] 로 덮의 씌워야함)






7) xcode 실행시킨 후 XCODE > Preferences... > Key Bindings 

Filter 입력창에서 delete line으로 추가한 항목을 검색 후 원하는 키로 설정해주면 끝!!





주의!)

입력한 키가 기존에 사용중일 경우가 있으므로 꼭 Conflicts에 들어가서 중복되는 키가 없는지 확인 후 사용해야함!!










extention


확장!??


음...    이럴때 써먹으면 좋을 듯 하다.


일단,

"안녕하세요" => "요세하녕안" 이렇게 역순으로 글자를 바꾸려면 


1
2
var testString:String = "안녕하세요"
String(testString.characters.reverse())

cs


이렇게 해주면 된다.

그런데 저렇게 사용해야할 부분이 많다면??

매번 저렇게 해줘도 되겠지만 

extention으로 String을 확장해서 사용하면 

아주 간단히 사용이 가능하다.


1
2
3
4
5
6
7
8
9
extension String
{
    func backwards() -> String
    {
        return String(self.characters.reverse())
    }
}
 
"안녕하세요".backwards()
cs

이 얼마나 아름다운 기능이냐....  ㅠㅠ  
swift 너란놈은..


'개발 > Swift' 카테고리의 다른 글

구문 레이블  (0) 2015.12.22
#available  (0) 2015.12.22
willSet didSet  (0) 2015.12.11

willSet didSet


아직 공부중이라 어떻게 사용하는게 Best일진 모르겠지만 암튼 사용 용도에 따라 엄청 쓰임새가 많은 놈 임에는 틀림이 없다.


간단하게 정의하자면 저놈들은 한마디로 


변수를 감시하는 감시자!!


그럼 어떻게 동작하는걸까?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class ObserverTest
{
    var testWill = 0
        {
        willSet
        {
            print("\(testWill) <= 바뀌기 전이야!!")
        }
        
        didSet
        {
            print("\(testWill) <= 값이 바꼈어!!")
        }
    }
    
    var testDid:Int = 0
        {
        didSet
        {
            if testDid > 5
            {
                testDid = 0
            }
            print(testDid)
        }
    }
}
var observer = ObserverTest()
observer.testWill = 10
cs


observer.testWill = 10 이 실행되는 순간 

0 <= 바뀌기 전이야!!

10 <= 값이 바꼈어!!


이렇게 찍힌다.

특정 변수를 모니터링 하고 있다가 값이 바뀌게 되면 

바뀌기 바로 직전에 willSet

바뀐 직후 didSet이 실행되는거다.


특정 변수의 값이 변하는 순간을 체크하고 싶을때 print를 걸어둔다던지

변수의 값이 제한 범위를 넘겼을 경우 다시 초기화 하고 싶다던지..

이런 경우 사용한다면 완전 편리하지 싶다!!!

'개발 > Swift' 카테고리의 다른 글

구문 레이블  (0) 2015.12.22
#available  (0) 2015.12.22
extention  (0) 2015.12.12

말이 필요 없다.
일단 동영상을 보자.



물리 엔진 없이(물리 엔진을 사용한다 치더라도!!) 저런 로직을 구현한다면 과연
소스 코드 몇줄로 구현 가능할까??
모르긴 몰라도 머리 꽤나 썩혀야 할 듯 하다.

동영상을 보면 알겠지만 Corona SDK 를 사용하면 단 10여줄의 코딩으로 저런 물리효과를 낼 수 있다.
이건 뭐 ㄷㄷㄷㄷ;;;

단 한줄로 이미지 로딩과 display가 가능하다니.

local background = display.newImage("bg.png")

개발 편의성에 있어선 말이 필요 없을 듯 하다.

하지만 2D 전용이라는 점과 개발 완료 후 퍼블리싱 시 유료 전환을 해야 한다는 점(년 단위 지불방식),
게임 개발을 목적으로 하는 툴이기 때문에 일반 App 개발을 위한 UI 구성 시 디테일 한 작업은 어렵다는 점 등
몇가지 아쉬운 점들이 있긴 하지만 안드로이드와 아이폰용 간단한 게임 제작시에는 정말 매력적인 툴임에는 틀림없다.

- 얼마전 미국 앱스토어에서 앵그리버드를 제친 14살 소년이 만든 Bubble Ball 게임도 이 corona sdk를 사용하여 만들었다.

'개발 > Corona SDK' 카테고리의 다른 글

Physics Engine  (0) 2011.05.12
Corona SDK 소개  (0) 2011.05.11

일단 앱엔진에 가입해볼까나~

1) https://appengine.google.com/start/      구글 앱엔진 사이트

    - Create Application 버튼 클릭



2) 핸드폰 SMS 인증

    - Country and Carrier : default인 [Other (Not Listed)]로  /  왜 korea는 없냔말이닷!!

    - Mobile Number  : 휴대폰 번호가 010 3333 4444인경우 +92 10 333 4444 입력



3) 어플리케이션 생성

     - Application Identifier : 어플리케이션 ID 생성

     - Application Title : 어플리케이션 제목

     - 중간의 노란 박스 부분의 Edit 부분을 클릭하면 생성할 app의 인증 옵션과 storage 옵션 지정 가능 (난 Default로~)



4) 생성 완료



5) https://appengine.google.com/ 페이지로 접속해보면 아래와 같이 생성된 Application을 확인할 수 있다!!

'개발 > 구글 앱 어플' 카테고리의 다른 글

구글 앱 엔진!!??  (0) 2011.05.07

안드로이드, 아이폰 app용 웹서버 개발을 해보고자 이런저런 서버 호스팅 관련 정보를 찾던 차에

구글의 [앱엔진] 이라는 서비스가 있다는걸 알았다.

 

클라우드 컴퓨팅 리소스를 무려 [공짜!!!!! 물론 적은 리소스에 한하여]로 이용해보다가

니들이 더 필요하다 싶으믄 돈내라~    라고 지껄이는 대인배 구글횽들.

 

각설하고

 

앱엔진 가입부터 서버 세팅 및 클라이언트 연동(일단 안드로이드로)까지

차근차근 하나씩 공부하면서 진행해봐야겠다!!!

'개발 > 구글 앱 어플' 카테고리의 다른 글

구글 앱 엔진에 가입해보자~  (0) 2011.05.07

+ Recent posts