• NSobject的基本方法使用


      除了NSobject以外,所有的类都有父类。默认的父类一般是NSobject。

      我们建立一个名为person,继承NSobject的子类,来方便下面的讨论。

        //初始对象

        person *niang=[[person alloc] init];   

        //1 这个方法是判断有没有这个实例方法,返回值是bool类型。有,返回1,没有,返回0。只能判断实例方法。

        BOOL a=[person instancesRespondToSelector:@selector(print)];

        NSLog(@"%d",a);

        //2 功能和上一个函数一样,这是这是一个实例方法。

        BOOL a1=[niang respondsToSelector:@selector(print)];

        NSLog(@"%d",a1);

       

      //3 判断有没有遵守这个协议。

        Protocol *NSCoding;

        BOOL b=[person conformsToProtocol:NSCoding];

        NSLog(@"%d",b);

        //4 nsobject的一个类方法,会得到一个指向这个实例方法的一个函数指针

        IMP nprint=[person instanceMethodForSelector:@selector(print)];

        nprint();

      //5 nsobject的一个实例方法,会得到一个指向这个实例方法的一个函数指针

        IMP nprint1=[niang methodForSelector:@selector(print)];

        nprint1();

        //6 运行时替换person中print方法的实现,用replace这个方法实现(前提是你把这个方法实现了),用个方法时注意这四个参数的类型。

        IMP replace=[niang methodForSelector:@selector(replace)]; 

       class_replaceMethod([person class], @selector(print),replace, NULL);

        [niang print];

       

        //7 这个方法的作用:给person这个类添加一个nothing的方法,方法的实现是replace

        class_addMethod([person class], @selector(nothing),replace, NULL);

        [niang performSelector:@selector(nothing)];

       //上面两个方法说明了 oc是一门动态语言。

       

        //8  我们调用实例方法时“[]”就是下面的内容

        //   objc_msgSend(niang,@selector(print));

     

       我们在创建一个 名为 son 继承于person的子类。

       son *son1=[[son alloc] init];

     

           9  如果我们在子类中实现了与父类同名的方法,子类的对象调用该方法时,是调用子类自己的那个方法。

     

        //10 本质上,用%@打印对象的时候,打印的是该对象调用的description方法所返回的字符串。

        NSLog(@"%@******%@",[son1 description],son1);

        //11 该方法判断 son1是不是person类的对象。这里返回的是1(子类的对象都是属于父类的)

        BOOL c=[son1 isKindOfClass:[person class]];

        NSLog(@"%d",c);

       

    //12 该方法功能与上面一样,但是是严格匹配类型。在这个方法中,子类的对象不是属于父类的了。所以这里返回的时0

        BOOL c1=[son1 isMemberOfClass:[person class]];

        NSLog(@"%d",c1);

  • 相关阅读:
    1.Apache与Tomcat
    jeeplus 多选框
    GIT 回滚
    jsp 中data 转换 字符串
    Pattern和Matcher中表达式
    web.xml 详细介绍
    $.ajax()方法详解
    My 2016
    如何做好一个保安队长。
    集合之WeakHashMap
  • 原文地址:https://www.cnblogs.com/lucan727/p/3890959.html
Copyright © 2020-2023  润新知