我有一个Objective-C静态库(iOS SDK 6):
实施文件(.m)
#import "MyClass.h"
@implementation MyClass
static id _instance;
static NSString *version;
- (id)init {
if(_instance == nil) {
_instance = [super init];
version = @"1.0";
}
return _instance;
}
- (NSString *)getVersion {
return version;
}
+ (MyClass *)sharedInstance {
return _instance;
}
@end
当我访问其他iPhone App项目中的类(导入库)时,我无法获取版本字符串。
#import "ViewController.h"
#import <MyClass/MyClass.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
MyClass *cls = [MyClass sharedInstance];
NSLog(@"Loaded. Version: %@", [cls getVersion]);
}
@end
我错过了什么?未报告错误,但版本为(null)
答案 0 :(得分:3)
有很多错误......
init
根本没有被调用...你好像尝试使用单身模式。所以,这样做......
+ (MyClass *)sharedInstance {
static MyClass *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[[self class] alloc] init];
});
return instance;
}
...并将您的init
更改为...
- (id)init {
self = [super init];
if ( !self ) {
return nil;
}
_version = @"1.0";
return self;
}
...并致电[[MyClass sharedInstance] getVersion]
以获取您的版本。
P.S。阅读ObjC指南,不要使用get
前缀。应该只是version
。