Iphone 在iOS应用程序中访问静态库中的属性
我有一个objective-C静态库(iOS SDK 6): 实现文件(.m)Iphone 在iOS应用程序中访问静态库中的属性,iphone,objective-c,Iphone,Objective C,我有一个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
#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应用程序项目(导入库)中的类时,我无法获取版本字符串
#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
#导入“ViewController.h”
#进口
@界面视图控制器()
@结束
@实现视图控制器
-(无效)viewDidLoad
{
[超级视图下载];
MyClass*cls=[MyClass sharedInstance];
NSLog(@“Loaded.Version:%@,[cls getVersion]);
}
@结束
我错过了什么?未报告任何错误,但版本为
(null)
有很多错误
- 根本不调用
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]
获取您的版本
请阅读ObjC指南,不要使用
get
前缀。应该是版本
有很多错误
- 根本不调用
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]
获取您的版本
请阅读ObjC指南,不要使用
get
前缀。应该是version
你能展示一下召唤的实现吗?对不起,应该是sharedInstance
而不是call
init真的被调用了吗?。我不这么认为。请尝试打印id cls,并确认其类类型。我想这就是你遗漏的地方。你能展示一下召唤的实现吗?对不起,它应该是sharedInstance
而不是courd
init真的被调用了吗?。我不这么认为。请尝试打印id cls,并确认其类类型。我想这就是你错过了什么。对不起,我的新手Obj-C
skills。看来我学错了教程。现在运作良好。但是我不明白为什么需要dispatch\u once
。dispatch\u once
只调用一次块,这意味着您的类sharedInstance
方法总是返回相同的对象。阅读此示例-为我的新手Obj-C
技能感到抱歉。看来我学错了教程。现在运作良好。但是我不明白为什么需要dispatch\u once
。dispatch\u once
只调用一次块,这意味着您的类sharedInstance
方法总是返回相同的对象。请阅读此示例-