swift 학습의 폐쇄

3672 단어
클립은 oc의 Block과 매우 비슷하고 OC의 Block은 익명의 함수와 매우 비슷하며 클립은 함수를 정의하는 데 쓰인다.역할:
  • Block은 코드를 저장하고 필요할 때 실행하는 데 사용됩니다.복습 Block
  • 클립도 코드를 저장하는 데 사용되며 필요할 때 실행
  • 클로즈업 기본 형식:


    in의 의미는 인덱스 반환값과 실행 코드를 구분하고 파라미터가 없는 패키지 형식을 생략할 수 있습니다
        {
            () -> ()
            in
            //     
        }
    

    패킷을 닫는 패킷 형식:
     {
            (  :    ,  :    ) ->    
            in
            //     
      }
             “()”
    

    Block과 클립의 대비:


    Block 코드:
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
            NSLog(@"     :%@",[NSThread currentThread]);
            NSLog(@"       ");
            dispatch_async(dispatch_get_main_queue(), ^{
                NSLog(@"     :%@",[NSThread currentThread]);
                NSLog(@"     UI");
            });
        });
    

    swift의 클로즈업 코드:
    dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
                print("      ")
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    print("     UI")
                })
            }
    
    

    클로즈업으로 하나의 작은 예를 실현하고 UIScrollerView에 약간의 UIview를 추가한 예로 중간에 두 개의 클로즈업을 실현하여 전참을 진행한다.
    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
            //  scrollView
            let sv = creatScrollerView({ () -> Int in
                //     UIView
                return 10
                
                }) { (index) -> UIView in
                    //  View
                    let btn = UIButton()
                    btn.setTitle("  \(index)", forState: UIControlState.Normal)
                    btn.frame = CGRect(x: 375*index, y: 0, width: 375, height: 444)
                    print(375*index);
                    btn.backgroundColor = UIColor(colorLiteralRed: Float(random()%10)/10.0, green: Float(random()%10)/10.0, blue: Float(random()%10)/10.0, alpha: 1)
                    return btn
            }
    //         ScrollerView   View 
            view.addSubview(sv)
        }
    
        //       
        func creatScrollerView(btncount:()->Int,btnSubView:(index:Int)->UIView) -> UIScrollView
        {
            let sv = UIScrollView(frame: CGRect(x: 0, y: 20, width: 375, height: 444))
            
            sv.backgroundColor = UIColor(colorLiteralRed: 0.7, green:0.2, blue: 0.3, alpha: 1);
            
            view.addSubview(sv);
            
            let btnCount = btncount()//    ,    
            var width:Float = 0.0;
            for i in 0..

    클립으로 간단한 예시를 실현하고 화면을 클릭하여 현재 인터페이스의 배경색을 변경합니다
    import UIKit
    
    class ViewController: UIViewController {
    
    //          
        var finished:(()->())?
        
        override func viewDidLoad() {
            super.viewDidLoad()
            // weak        
            weak var weakSelf = self;
            //    
            loadTime { () -> () in
                NSLog("        ");
                //      
                weakSelf?.view.backgroundColor = UIColor(colorLiteralRed: Float(random()%10)/10.0, green: Float(random()%10)/10.0, blue: Float(random()%10)/10.0, alpha: 1)
            }
            
            
        }
    //      
        func loadTime(finished:()->())
        {
            NSLog("      ");
            self.finished = finished;
        }
        
        override func touchesBegan(touches: Set, withEvent event: UIEvent?) {
            
            //    
            finished!()
        }
    
    
       
    }
    
    

    ps:
    위크 수식을 사용하여 폐쇄의 순환 인용 문제를 방지합니다.

    좋은 웹페이지 즐겨찾기