A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© x65396731 中级黑马   /  2014-8-14 12:34  /  1489 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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


2 个回复

倒序浏览
对象方法才需要实例来调用,类方法不用吧?!
还有,你问题里说的实际参数是个什么意思?
通过你问的这两个问题,我觉得,你把类方法是对象方法正好弄反了。
回复 使用道具 举报
本帖最后由 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 //这里算不算传一个实例变量

我不明白的是,老师既然说类方法是不需要访问实例的成员变量就可以使用的,但现在这个类方法如果不知道字符串的具体内容不就无法运行了吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马