I am trying to update my UIProgressView with some data from a method of my utility class.
Now, just because for updating my UIProgressView, i am holding that method in my view controller class and everything works fine. Because i can reach the loop in that method with a global variable so i can update my progress. But if i want to move this method to my utility class, what am i supposed to do to keep informed my UIProgressView. Thanks.
 
    
    - 189
- 2
- 14
1 Answers
What I would suggest is to redesign your utility class to be a singleton
Here is an example of code of your utility class:
UtilityClass.h file:
@interface UtilityClass : NSObject
+ (UtilityClass *)sharedInstance;
- (CGFloat)awesomeMehod;
@end
UtilityClass.m
@implementation UtilityClass
+ (id)sharedInstance
{
    static UtilityClass *_instance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _instance = [[UtilityClass alloc] init];
    });
    return _instance;
}
- (id)init
{
    self = [super init];
    if (!self) return nil;
    // Regular initialization, however keep in mind that it will be executed just once
    return self;
}
- (CGFloat)awesomeMethod
{
    return 42.0f
}
@end
Now from your view controller you will call
CGFloat progress = [[UtilityClass sharedInstance] awesomeMethod];
[self.progressView setProgress:progress];
keep in mind several things:
- It's one of possible approaches and I would go and read about various design patterns that might come in handy one day 
- Probably a good idea to refresh knowledge on view controllers and the way they interact 
- For class to become a proper singleton, you also should override methods such as - alloc,- init,- initWithZone,- dealloc,- releaseetc (list of methods to override will vary if you use ARC), here is an example of doing that, although- dispatch_oncetakes care of- @synchronize()call. For now, as long as you "instantiate" you class only through calling- sharedInstanceclass method you will be fine.
 
    