关于OBJC的静态变量 刚学OBJC,看到OBJC的加号函数同C++的静态函数一样,问一下,静态函数只能调用静态变量,OBJC有静态变量没有。怎么使用。百度不到,才来问人。C++ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 objective-c的静态变量好像是在类的.m文件中声明个静态局部变量,然后通过实例方法来返回或者操作。貌似不像C++有静态成员 static,自己加了啊还有静态函数不能实例化调用,需要类直接调用 出错,OBJC类不能用STATIC成员变量。 可以使用static,定义在实现里面的, .m里的 那在类的interface里不用声明吗 所以我觉得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 在interface里也是可以声明的。如:classA.hstatic 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里也是可以直接使用的。 没看,晕,应该是:#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;} 【提问】UISearchBar的页面跳转问题 使用ShareSDK将信息分享到qq空间出现错误 IOS 页面跳转出现的问题 ASIHttpRequest POST数据的疑问 关于iphone加速计 CALayer 坐标转换的问题 代码签名的整个流程 字典下标问题,求解~~~~ 取Html标签 iOS开发遇难题求大佬帮忙 address doesn't contain a section that points to a section in a object file object-c block问题
{
}
+ (classA *)share;classA.mstatic classA * gClassAObj = nil;
@implementation classA
+ (classA *)share
{
if (gClassAObj == nil )
{
gClassAObj =[ [classA alloc] init];
}
return gClassAObj;
}@end
如:
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里也是可以直接使用的。
#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;
}