IOS_OC_6-Blockタイプphotocoloプロトコル

1559 ワード

block
1,概要
blockはコードをカプセル化し、悪意を持っていつでも実行します.関数パラメータとして、または関数の戻り値として使用することができ、それ自体がパラメータに戻り値を入力することもできる.
2,blockの定義
    
  
    void (^myblock)(int) = ^(int a,int b){
        int c = a+b;
        NSLog(@"   %i     !",c);
    };
    
    int c = myblock(1);
typedef int (^myblock)(int a, int b);

    
   myblock bloc = ^(int a,int b){
        NSLog(@"         :%i",1);
       return a;
    };

protocol
1,概要
多くの方法を宣言するために使用することができます.この協定を遵守しなければ、協定のすべての方法を持っていることに相当します.彼の子類もこれらの方法を持っています.
2,プロトコルの定義と使用
      
//
//  MyProtocol.h
//      
//
//  Created by    on 15/1/8.
//  Copyright (c) 2015  zg. All rights reserved.
//

#import <Foundation/Foundation.h>

//                 NSObject              
@protocol MyProtocol <NSObject>


@required//      
- (void)test;
- (NSString *)test1;//        
@optional//     
- (id)test2:(int) age;
@end
//
//  Book.h
//      
//
//  Created by    on 15/1/8.
//  Copyright (c) 2015  zg. All rights reserved.
//

#import <Foundation/Foundation.h>
@protocol MyProtocol.h;
@class  Person;

@interface Book : NSObject<MyProtocol>//         ,                                
{
    double _price;
    Person *_person;
    BOOL _cheap;
}
@property (atomic,assign)double price;
@property (nonatomic,assign,getter=isCheap)BOOL cheap;
@end

注意:オブジェクト返却タイプNSObject*b=[[Book alloc]init];Java汎用と類似の制限クラスは、特定のプロトコルを遵守する必要があります.