0

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

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

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

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

现在理想情况下,这将在名为 GeneralModel.m 的第三个文件中

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

4

3 回答 3

8

如果这个方法要在 Application 的很多地方使用,那么在这种情况下你应该把它当作全局方法,并尝试把这个方法放在单独的类中,可能是类的类型NSObject

  @interface Utility :NSobject

  - (void) getProperties
  @end

 @implementation Utility

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

在这里,每当您需要这些方法时,您只需要创建UtilityClass 的 Object 就可以在需要的任何地方轻松访问它。like

只是以ReadViewController这种方式制作对象和访问

  Utility * obje = [Utility  alloc]init];

  [obje getProperties  ];

还有一件事,如果您只是谈论应用程序架构,假设您遵循MVC这种情况,您应该保留您的model(NSObject Type)Class进行一些数据库调用,请求调用服务器。View将Classes 代码 Like分开保存UIView,只将 Code 放在Controller class需要控制 App Logic 的地方。

这是解释MVC架构的链接。

我希望它清楚你。

于 2012-11-13T12:32:31.347 回答
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");
}
//***********************
于 2012-11-14T10:19:48.277 回答
0

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

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

@implementation Utility

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

在这里,每当您需要该方法时,您只需要创建实用程序类的对象就可以在任何需要的地方轻松访问它。like

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

Utility * obje = [Utility  alloc]init];
[obje getProperties  ];
于 2014-04-09T10:41:38.000 回答