2012-11-13 98 views
0

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

我有我的ReadViewController.h和ReadViewController.m文件与我ChooseViewController.h和ChooseViewController.m文件一起。

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

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

现在理想,这将是在一个名为GeneralModel.m

第三个文件

请给我什么样的代码需要在控制器文件他们能够调用此方法的基本示例。

+2

我想你想使用继承。你可以在GeneralModel.m和.h文件中实现 - (void)getProperty方法。然后,您可以调用ReadViewController * rvc ...然后调用[rvc getProperties],而无需在ReadViewController中实现该方法。但是不要忘记在ReadViewController的头文件中实现@interface ReadViewController:GeneralModel – Vinh

+1

您似乎缺乏Objective-C(以及一般编程)的工作原理。我建议您查看一些“入门”文章,例如HTTP:// cocoadevcentral。com/d/learn_objectivec/ –

+1

是的'安德烈亚斯莱伊'它可能是真的。但我想在此解释一件事。如果有人想知道某件事情,那么我们应该给它+ vely而不是做一些无稽之谈的方式.'sorry dude',在这里我没有指出这个词给你,我只是指出谁向下投票给这个问题。我只是认为今天如果有人缺乏知识并不意味着他无法获得知识..... !!!!!在将来我们真的需要合作。我真的很讨厌那些试图批评的人...... !!!! – Kamarshad

回答

8

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

@interface Utility :NSobject 

    - (void) getProperties 
    @end 

@implementation Utility 

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

此时,每当你需要的方法,你只需要创建Utility类的对象可以方便地访问任何地方needed.like

ReadViewController

只是使物体并获得这样

Utility * obje = [Utility alloc]init]; 

    [obje getProperties ]; 

有一件事,如果你只是谈论应用程序体系结构,假设你在MVC之后,你应该保持你的model(NSObject Type)Class进行一些数据库调用,请求ca到服务器。保持View类代码像UIView分开,并将代码放在Controller class里面,这只需要控制应用程序的逻辑。

Here is the Link which explain The MVC Architecture.

我希望它会清除你。

+1

@这是一个谦虚的要求,假设我的解释不正确,请亲密我,而不是做任何downVote.it会有所帮助。并尝试对downVote进行一些评论... – Kamarshad

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"); 
} 
//*********************** 
+1

我建议你使用ARC(自动引用计数,http ://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html)而不是手动内存管理。它节省了大量的时间,绝对是前进的方向。另外,你似乎已经引用了'sqlite3.h'。您可能需要考虑使用Core Data(http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/CoreData/cdProgrammingGuide.html),它是Apple提供的iOS默认数据库解决方案。 –

0

如果此方法要在应用程序中的很多地方都可以使用,然后在这种情况下,你应该把它看作全球方法,并尝试把这个方法在不同的类可能是NSObject类的类型。

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

@implementation Utility 

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

此时,每当你需要的方法,你只需要创建工具类的对象可以方便地访问任何地方needed.like

在ReadViewController只是使物体并获得这样

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