如何创建将在任何viewController - iOS中使用的全局计数器函数

时间:2014-09-04 14:12:29

标签: ios objective-c ios7 global-variables

.h文件

#import <Foundation/Foundation.h>

@interface globalFunction : NSObject{

    int nbr;
    }
@property (nonatomic) NSInteger myInt;

+(void)eventCount:(NSString*) eventName;

@end

.m文件

@synthesize myInt;


+(void)eventCount:(NSString *)eventName{


    myInt ++;
    NSLog(@"Event name %@ and the count %d",eventName, myInt);


    }

但是这给了我在类方法中访问的实例变量myInt的错误。

当我搜索谷歌时,当我将我的全局方法符号(+)更改为实例函数( - )

时,结果证明问题已解决

但我需要一个全局方法,我可以在任何viewController中使用它来帮助我计算会话期间特定事件发生的次数。

我如何处理此事?

2 个答案:

答案 0 :(得分:0)

你应该是一个单例对象,它将在所有对象之间存活并共享。然后你可以把一个柜台作为财产,看一下这篇文章:http://www.galloway.me.uk/tutorials/singleton-classes/

希望它有所帮助!

答案 1 :(得分:0)

将singleton Class用于全局计数器:,如:

Interface: (in .h)

@interface globalFunction : NSObject
{
    int nbr;
}


@property (nonatomic, assign) NSInteger myInt;

+ (instancetype)sharedInstance;

- (void)eventCount:(NSString*) eventName;

@end




Implementation: (in .m)

@implementation globalFunction


#pragma mark - Singleton Class instance
/*
 * Singelton instance of globalFunction
 */
+ (instancetype)sharedInstance {
    static globalFunction *_instance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _instance = [[globalFunction alloc] init];
    });

    return _instance;
}



- (void)eventCount:(NSString *)eventName{


    _myInt ++;
    NSLog(@"Event name %@ and the count %d",eventName, _myInt);
}


@end

可以使用以下方式访问:

[[globalFunction sharedInstance] eventCount:@"Ev"];