创建单例对象时发送到类的无法识别的选择器

时间:2015-02-25 05:04:20

标签: ios singleton

我有一个共享班级

.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'

为什么?我该如何解决这个问题?请帮帮我

2 个答案:

答案 0 :(得分:0)

错误告诉编译器找不到您的选择器,更改您在界面中声明的sharedManger方法,现在区分大小写是原因..

答案 1 :(得分:0)

您声明方法为

+(ArraysClass *)SharedManager;

您已实施

+(ArraysClass *)sharedManager

你正在调用

[ArraysClass SharedManager]

在实施中使用SharedManager而不是sharedManager ..即 s 应为大写。

这里的情况是你的方法没有实现,因为它的名字不同。