2016-12-30 2 views
0

Я хочу использовать некоторые одноэлементные классы. Я создал его, но не знаю, как его использовать в моем режиме контроля.цель-c как использовать singleton?

#import <Foundation/Foundation.h> 
#import <UIKit/UIKit.h> 

@interface AppData : NSObject 

//Singletone 
+(AppData*)sharedInstance; 
@property (strong,nonatomic) NSString *shardString; 

//Refs 

@end 

AppData.m:

#import "AppData.h" 

static AppData* staticInstance; 
@implementation AppData 

+(AppData*)sharedInstance 
    { 
if (staticInstance==nil) 
{ 

    staticInstance=[AppData new]; 

} 

return staticInstance; 
} 

@end 

Теперь мне нужно, чтобы дать значение стандартного расположения букв NSString для объекта Синглтон и как получить доступ от другого viewControllers к этому объекту? ViewController.m:

#import "ViewController.h" 
#import "AppData.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

NSString *qwerty = @"i'm a singlton!"; 

[[AppData sharedInstance] ] 

NSLog(@"%@",); 

} 
+0

Вы в основном уже есть: '[[AppData sharedInstance] setShardString: БУКВ]' (или 'setSharedString' в зависимости от того, является ли опечатка). Одна вещь, однако, состоит в том, чтобы взглянуть на примеры создания одноэлементов, которые используют 'dispatch_once'. Теперь вам может не понадобиться безопасность потока, но вы это сделаете. :) –

ответ

3

Вы получаете доступ к свойству только Ike вы для любого другого объекта.

[AppData sharedInstance].sharedString = @"foo"; 

Или

NSString *foo = [AppData sharedInstance].sharedString; 
+0

Я хочу добавить еще одну переменную типа NSInteger в singleton (@property (сильный, неатомный) NSInteger * sharedInt;), но я получаю: свойство с атрибутом «сохранить (или сильным)» должно быть типа объекта. Как исправить? –

+1

NSInteger - это примитивный тип, а не тип объекта. Это должно быть '@property (nonatomic, assign) NSInteger sharedInt;'. – rmaddy

+1

FYI - пожалуйста, не забудьте принять ответы, которые решают ваши вопросы. Вы приняли только один ответ на все ваши вопросы. – rmaddy

Смежные вопросы