Objective-C中单例方法的问题

cle*_*ent 0 iphone methods singleton ios4

我正在做单身,A不能使用它的方法......参数的类型显然不正确......而且有很多错误(错误)......

错误在评论中(在代码中)

在外国班:

[ [MySingleton sharedMySingleton] setAuth:@"test"]; //incompatible type for argument 1 of setAuth
NSLog([ [MySingleton sharedMySingleton] getAuth]); //Incompatible type for argument 1 os NSLOG
Run Code Online (Sandbox Code Playgroud)

在我的单身人士课程中:

#import <Foundation/Foundation.h>


@interface MySingleton : NSObject {

    NSString *myToken;

}

+(MySingleton*)sharedMySingleton;

-(void)setAuth:(NSString) token;
-(NSString)getAuth;

@property (nonatomic, retain) NSString *myToken;

@end
Run Code Online (Sandbox Code Playgroud)

......而且......

    #import "MySingleton.h"

@implementation MySingleton

static MySingleton* _sharedMySingleton = nil;
@synthesize myToken;

+(MySingleton*)sharedMySingleton
{
    @synchronized([MySingleton class])
    {
        if (!_sharedMySingleton)
            [[self alloc] init];

        return _sharedMySingleton;
    }

    return nil;
}

+(id)alloc
{
    @synchronized([MySingleton class])
    {
        NSAssert(_sharedMySingleton == nil, @"Attempted to allocate a second instance of a singleton.");
        _sharedMySingleton = [super alloc];
        return _sharedMySingleton;
    }

    return nil;
}

-(id)init {
    self = [super init];
    if (self != nil) {
        // initialize stuff here
    }

    return self;
}

-(void)setAuth:(NSString) token { // Can not use as abject as parameter to a method
    myToken=token;// incomatible types in assignment
}

-(NSString)getAuth { // can not use an object as parameter to a method
    return myToken;// incomatible types in return
} // control reaches end of non-void function


@end
Run Code Online (Sandbox Code Playgroud)

Jer*_*myP 5

-(void)setAuth:(NSString) token;
-(NSString)getAuth;
Run Code Online (Sandbox Code Playgroud)

应该

-(void)setAuth:(NSString*) token;
//                      ^ note a pointer is needed
-(NSString*)getAuth;
//        ^ note a pointer is needed
Run Code Online (Sandbox Code Playgroud)

此外,您的分配是疯狂的.你实际调用[super alloc]哪个会给你一个错误类型的对象.查看如何在iphone的objective-c中实现单例,以便更好地实现单例.