구문 레이블


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


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


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

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

+ Recent posts