Вызовите метод другого класса (например, через одноэлементный класс)? - PullRequest
2 голосов
/ 06 августа 2011

Я использовал это простое учебное пособие для создания моего синглтон-класса. Все отлично работает В учебнике не сказано, как создавать методы в этом классе, чтобы я мог получить к ним доступ из других классов (например, из других ViewControllers или AppDelegate.)

Как я могу это сделать? Большое спасибо заранее!

Ответы [ 3 ]

5 голосов
/ 06 августа 2011

Вы будете определять методы так же, как и в любом другом файле Objective-C.Добавьте определение в заголовок для открытых методов и затем внедрите их в файл реализации (.m).

#import <foundation/Foundation.h>

@interface MyManager : NSObject {
    NSString *someProperty;
}

@property (nonatomic, retain) NSString *someProperty;

+ (id)sharedManager;

//Add instance methods for your singleton here
- (void)someSingletonMethod;

@end

Использование:

[[MyManager sharedManager] someSingletonMethod];
1 голос
/ 09 августа 2012

файл синглтона .h

#import <Foundation/Foundation.h>
 @interface SingleTon : NSObject
{
  NSString *sum;

}

+(SingleTon *) createSingleTon;
-(NSString *) sumOfTwoNumbers:(NSString *) numOne :(NSString *)numTwo;
@end

синглтон .m файл

#import "SingleTon.h"

@implementation SingleTon

+(SingleTon *) createSingleTon
{
    static SingleTon *single= nil;
    if (single == nil) {

        single = [[SingleTon alloc] init];
    }
    return single;
}

-(NSString *) sumOfTwoNumbers:(NSString *) numOne :(NSString *)numTwo
{
    sum =  [NSString stringWithFormat:@"%d",[numOne intValue] + [numTwo intValue]];
    return sum;
}

@end

файл viecontroller.h

#import <UIKit/UIKit.h>
#import "SingleTon.h"
@interface ViewController : UIViewController
{
    SingleTon *sing;
    IBOutlet UITextField *one,*two,*sum;
}
-(IBAction)sum:(id)sender;
@end

файл viecontroller.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

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

-(IBAction)sum:(id)sender
{
    sum.text = [sing sumOfTwoNumbers:one.text :two.text];

}
@end

о / р enter image description here

0 голосов
/ 26 февраля 2014

Сделайте один метод класса для вашего первого класса, как это. также объявите это в файле .h.

+(FFMainVC *)sharedSingleton
{
    static FFMainVC *instance = nil;

    if(instance == nil)
        instance = [[FFMainVC alloc]init];

    return instance;
}
// write your method that you wants to access from other class. also declare this in .h as well

-(void)showCartView
{ 
       // Your Code
}  
// make call of your method from second class like this
[[FFMainVC sharedSingleton]showCartView];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...