iOS调用另一个类的方法

时间:2012-11-13 12:23:51

标签: ios class methods

我在这个网站上发现了类似的问题,但没有找到以明确和基本的方式解决问题的问题。

我的ReadViewController.h和ReadViewController.m文件以及ChooseViewController.h和ChooseViewController.m文件。

他们都需要访问当前在ReadViewController.m文件中的getProperties方法。

- (void) getProperties {
    NSLog(@"Start getProperties");
//SOME CODE
    NSLog(@"End getProperties");
}

现在理想情况下,这将位于名为GeneralModel.m

的第三个文件中

请给我一个基本示例,说明控制器文件中需要哪些代码才能调用此方法。

3 个答案:

答案 0 :(得分:8)

如果此方法将在Application中的许多地方使用,那么在这种情况下,您应将其视为Global方法,并尝试将此方法放在单独的类中,可能是NSObject类的类型。

  @interface Utility :NSobject

  - (void) getProperties
  @end

 @implementation Utility

 - (void) getProperties {
    NSLog(@"Start getProperties");
   //SOME CODE
    NSLog(@"End getProperties");
 }
 @end

此处每当您需要这些方法时,您只需要创建Utility类的对象,可以在任何需要的地方轻松访问它。比如

ReadViewController中的

只需以这种方式创建对象和访问

  Utility * obje = [Utility  alloc]init];

  [obje getProperties  ];

如果您只是谈论应用程序架构,那么有一件事,假设您在该案例中跟随MVC,您应该保留model(NSObject Type)Class进行一些数据库调用,请求调用服务器。保留View类代码分别与UIView类似,并将代码放在Controller class内仅控制应用逻辑所需的代码。

Here is the Link which explain The MVC Architecture.

我希望你能清楚。

答案 1 :(得分:0)

我实施的解决方案看起来像这样。我会接受iOS-Developer的回答,因为它让我走上正轨。

//*********************
//ReadViewController.h
#import <UIKit/UIKit.h>
#import "GeneralModel.h"

@interface ReadViewController : UIViewController {
    GeneralModel *generalModel;
}

@end
//*********************


//*********************
//ReadViewController.m
#import "ReadViewController.h"

@interface ReadViewController ()

@end

@implementation ReadViewController

NSArray *allProperties;

- (void) getProperties {
    generalModel = [[GeneralModel alloc] init];
    allProperties = [generalModel getProperties];
    NSLog(@"ALLPROPERTIES: %@", allProperties);
    [generalModel release];
}
//**********************


//**********************
//GeneralModel.h
#import <Foundation/Foundation.h>
#import "sqlite3.h"

@interface GeneralModel : NSObject {

}
-(NSArray *) getProperties;
@end
//**********************


//**********************
//GeneralModel.m
#import "GeneralModel.h"

@implementation GeneralModel

- (NSArray *) getProperties {
    NSLog(@"Start getProperties");
    NSArray *someProperties;
//Some nice code goes here for getting a lot of nice properties from somewhere else.
    return someProperties
    NSLog(@"End getProperties");
}
//***********************

答案 2 :(得分:0)

如果此方法将在Application中的许多地方使用,那么在这种情况下你应该将它视为Global方法并尝试将此方法放在单独的类中,可能是NSObject类的类型。

@interface Utility :NSobject
- (void) getProperties
@end

@implementation Utility

- (void) getProperties {
    NSLog(@"Start getProperties");
    //SOME CODE
    NSLog(@"End getProperties");
}
@end

此处只要您需要这些方法,您只需要创建实用类对象即可在任何需要的地方轻松访问它。如

ReadViewController中的

只是以这种方式创建对象和访问

Utility * obje = [Utility  alloc]init];
[obje getProperties  ];