黑马程序员技术交流社区

标题: 类方法和对象方法的区别 [打印本页]

作者: x65396731    时间: 2014-8-14 12:34
标题: 类方法和对象方法的区别
  今天看了关于NSString的分类方法视频
其中
//用类方法计算字符串中数字的个数
+ (int)numberCountOfString:(NSString *)str;//这是声明
我不明白类方法不是不需要实例才可以使用的方法吗?为什么这里需要传一个实际参数给它
另外在实现中有一句
【str characterAtUbdex: 参数】//这是一个对象方法
在类方法中调用一个对象方法不是和类方法的本质有冲突吗?类方法不是只能够通过类名调用的吗?
谢谢。



作者: cjfire    时间: 2014-8-14 13:34
对象方法才需要实例来调用,类方法不用吧?!
还有,你问题里说的实际参数是个什么意思?
通过你问的这两个问题,我觉得,你把类方法是对象方法正好弄反了。
作者: x65396731    时间: 2014-8-14 14:13
本帖最后由 x65396731 于 2014-8-14 14:26 编辑

比如这个是类方法计算字符里数字的个数

+ (int)numberCountOfString(NSString *)str
{
         int Count = 0;
         for ( int i = 0 ; i < [str length ]; i ++)
{
       unichar c = [str characterAtUbdex:i];
}      
         if ( c >"0"&& c<"9")
{
        Count ++;
}
        return Count;
}

这2句是类方法中调用对象方法吧?
类方法允许这样做吗?
假如在使用这个类方法中没有一个实例参数,这个类方法不就无法使用了吗?+
+(int)numberCountOfString(NSString *)str //这里算不算传一个实例变量

我不明白的是,老师既然说类方法是不需要访问实例的成员变量就可以使用的,但现在这个类方法如果不知道字符串的具体内容不就无法运行了吗?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2