创建单例对象时发送到 class 的无法识别的选择器
unrecognized selector sent to class when create a singleton object
我有一个共享class
.h
`
#import <Foundation/Foundation.h>
@interface ArraysClass : NSObject
@property(nonatomic,copy)NSMutableArray *mutArraySongs;
+(ArraysClass *)SharedManager;
@end
`
.m
`
#import "ArraysClass.h"
@implementation ArraysClass
static ArraysClass *sharedService = nil;
#pragma mark -
#pragma mark Singleton Methods
+(ArraysClass *)sharedManager {
if(sharedService == nil){
sharedService = [[super allocWithZone:NULL] init];
}
return sharedService;
}
- (id)copyWithZone:(NSZone *)zone {
return self;
}
-(id)init {
self = [super init];
if (self != nil) {
// initialize stuff here
// user=[LoggedUser sharedManager];
}
return self;
}
@end
`
在我的 ViewController
中,我需要从中创建一个对象。我喜欢这个
`
#import "ArraysClass.h"
ArraysClass *arrayClass=[ArraysClass SharedManager];
`
但是最后一行给了我这样的例外
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[ArraysClass SharedManager]: unrecognized selector sent to class 0x13e9c8'
这是为什么呢?我该如何解决这个问题?请帮助我
错误告诉编译器找不到您的选择器,更改您在界面中声明的 sharedManger 方法,现在区分大小写是原因..
您将方法声明为
+(ArraysClass *)SharedManager;
您实现了
+(ArraysClass *)sharedManager
并且您正在调用
[ArraysClass SharedManager]
在实现中使用 SharedManager
而不是 sharedManager.. 即 s 应该是大写的。
这里的情况是你的方法没有实现,因为它的名称不同。
我有一个共享class
.h
`
#import <Foundation/Foundation.h>
@interface ArraysClass : NSObject
@property(nonatomic,copy)NSMutableArray *mutArraySongs;
+(ArraysClass *)SharedManager;
@end
`
.m
`
#import "ArraysClass.h"
@implementation ArraysClass
static ArraysClass *sharedService = nil;
#pragma mark -
#pragma mark Singleton Methods
+(ArraysClass *)sharedManager {
if(sharedService == nil){
sharedService = [[super allocWithZone:NULL] init];
}
return sharedService;
}
- (id)copyWithZone:(NSZone *)zone {
return self;
}
-(id)init {
self = [super init];
if (self != nil) {
// initialize stuff here
// user=[LoggedUser sharedManager];
}
return self;
}
@end
`
在我的 ViewController
中,我需要从中创建一个对象。我喜欢这个
`
#import "ArraysClass.h"
ArraysClass *arrayClass=[ArraysClass SharedManager];
`
但是最后一行给了我这样的例外
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[ArraysClass SharedManager]: unrecognized selector sent to class 0x13e9c8'
这是为什么呢?我该如何解决这个问题?请帮助我
错误告诉编译器找不到您的选择器,更改您在界面中声明的 sharedManger 方法,现在区分大小写是原因..
您将方法声明为
+(ArraysClass *)SharedManager;
您实现了
+(ArraysClass *)sharedManager
并且您正在调用
[ArraysClass SharedManager]
在实现中使用 SharedManager
而不是 sharedManager.. 即 s 应该是大写的。
这里的情况是你的方法没有实现,因为它的名称不同。