想请教下,现在假设我要写一个User类,类中有一个方法,该方法实现根据传进的一个用户名参数,判断该用户是否存在,如果存在返回找到的实例User,不存在返回nil。问题---我是用类方法来写比较好,还是用一般的方法呢?如下。1.   + (id)userWithUserName:(NSString *)userName;2.   - (id)initWithUserName:(NSString *)userName;我之所以迷惑,是因为,我总觉得方法1是查找一个可能存在的对象。而方法2是初始化一个新的对象,不知道自己的想法是否正确?

解决方案 »

  1.   

    比如你在类接口中定义了一个属性fristName,在初始化的时候要截取名字的前几个字符作为firstName,那么你就要用到实例方法,才能调用self.fristName如果只是简单的对传入的userName做一些处理就直接返回,那就可以用类方法
      

  2.   

    哦,似乎懂了一些,假如,我想使用类方法去实现根据用户ID找到一个User,您看看我下面这么写可以吗?+ (id)userWithUserName:(NSString *)_userName
    {
      self = [[[super init] alloc] autorelease];
      self.userName = _userName;
      return self;
    }
      

  3.   

    我的理解是:
    类方法和实例方法(你问题中的一般方法),就类似于C++中的类中静态函数和非静态函数的区别。C++语言中是这样的:
    class base{ 
    static int func1(); 
    int func2(); 
    }; Objective-C中是这样的:
    @implementation base
    + (int)func1:;
    - (int)func2:;我是这么理解的,但是我也不知道这样是否是对的,一起学习啦。