刚学OBJC,看到OBJC的加号函数同C++的静态函数一样,
问一下,静态函数只能调用静态变量,OBJC有静态变量没有。怎么使用。
百度不到,才来问人。C++

解决方案 »

  1.   

    objective-c的静态变量好像是在类的.m文件中声明个静态局部变量,然后通过实例方法来返回或者操作。貌似不像C++有静态成员
      

  2.   

    static,自己加了啊还有静态函数不能实例化调用,需要类直接调用
      

  3.   

    出错,OBJC类不能用STATIC成员变量。
      

  4.   

    可以使用static,定义在实现里面的, .m里的
      

  5.   

    那在类的interface里不用声明吗
      

  6.   

    所以我觉得objective-c的类没有静态成员。它是通过在类实现文件中声明静态局部变量来实现C++的静态成员功能。一般这个用作单例模式,如下。classA.h@interface classA : NSObject
    {
    }
    + (classA *)share;classA.mstatic classA * gClassAObj = nil;
    @implementation classA
    + (classA *)share
    {
          if (gClassAObj == nil )
         {
               gClassAObj =[ [classA alloc] init];
         }
         return gClassAObj;
    }@end
      

  7.   

    在interface里也是可以声明的。
    如:
    classA.h
    static classA * gClassAObj = nil;
    @interface classA : NSObject
    {
    }
    + (classA *)share;classA.m
    @implementation classA
    + (classA *)share
    {
          if (gClassAObj == nil )
         {
               gClassAObj =[ [classA alloc] init];
         }
         return gClassAObj;
    }@end
    这样.m里也是可以直接使用的。
      

  8.   

    没看,晕,应该是:
    #import <Foundation/Foundation.h>
    static int sTier_count = 0;
    @interface Tier : NSObject 
    {
    @private
        int tier_num;
    }
    @end
    @implementation Tier
    - (id) init
    {
        if (self = [super init]) {
            sTier_count++;
            tier_num = sTier_count;
        }
        return self;
    }