2014年2月11日

一、NSNotification、NSNotificationCenter类的作用、用法及相关方法:

1、此两类的作用在于一个对象通过消息中心给多个对象发送消息,不仅仅可给本类对象发送消息,而且能够给其他类的对象发送消息;

2、主要方法和实例:

创建一个NSNotificationCenter的对象,并将teacher2添加到消息中心:
[[NSNotificationCenter defaultCenter] addObserver:teacher2 selector:@selector(doHomework) name:@"doHomework" object:nil];
创建一个NSNotificationCenter的对象,并将teacher2从消息中心移除,注意,当一个对象被回收时,一定要将其从消息中心中移除!
[[NSNotificationCenter defaultCenter] removeObserver:teacher2];
创建一个NSNotificationCenter的对象,并发送消息
[[NSNotificationCenter defaultCenter] postNotificationName:@"doHomework" object:self userInfo:@{@"wode":@"baobei"}];

二、NSAsset使用实例:

若条件成立,则无反应,若不成立,则运行此语句时出错,并打印出:3不大于4;只能在类中定义的方法中使用,主要用于调试。
NSAssert(a<4, @"3不大于4",a);

三、NSclassFromstring、NSstringFromclass

找到ClassOne这个类,并赋值给cls
Class cls=NSClassFromString(@"ClassOne"); 创建一个ClassOne的对象 id cl=[cls new];
NSString *str=NSStringFromClass(cls);

  NSLog(@"%@",str);

打印出:ClassOne

四、Block

Block类似于函数指针,但又是一个对象,能够存一些属性

在Block中不能修改外面的自动变量,除非有__block修饰,但是能够引用外面的变量,引用时自动拷贝一份,当外面的变量发生变化时,块内的变量不发生改变;

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        int u=100;
        
        typedef void (^ block2) (int m);
        
        block2 cc=^(int n){
            NSLog(@"woshi blck2----%d",n);
        };
        
        
        
        void (^ block) (block2 bloc2)=^(block2 bloc2){
           
            NSLog(@"wo shi block");
            
            bloc2(67);
            
            NSLog(@"%d",u);
            
            
        };
        
        block(cc);
        
        
    }
    return 0;
}
原文地址:https://www.cnblogs.com/yueyuanyueyuan/p/3545152.html