2011-06-24 157 views
0

基本上,我想調用主類持有指針的子類中的主類的函數。
我知道我可以得到主類來啓動子類並將函數附加到它。但我不希望這樣,我希望子類使用其init函數啓動自己。
有什麼辦法可以從someClass調用doSomething?
一些基本的代碼,以顯示我想要的東西:
在MainViewController.h:如何從類內的對象中調用類函數?

@class SomeClass; 

@interface MainViewController : UIViewController { 
     SomeObject *someInformation; 
     SomeClass *someInstance; 
} 
@property (nonatomic, strong) SomeClass *someInstance; 

-(void)doSomething:(id)sender; 
@end 

在MainViewController.m:

@implementation MainViewController 
@synthesize someInstance; 
-(void)doSomething:(id)sender { 
    //do something to someInformation 
} 
@end 

在SomeClass.h:

@interface SomeClass : NSObject { 
    UIStuff *outstuff; 
} 
@property (strong, nonatomic) UIStuff *outstuff; 
-(void)somethingHappened:(id)sender; 
@end 

SomeClass.m

@implementation SomeClass 
@synthesize outStuff; 
-(IBAction)somethingHappened:(id)sender { 
    //call doSomething to the main class that points to this class 
} 
@end 
+0

你能解釋一下嗎?你想從什麼課程中調用什麼功能? –

+0

我想從SomeClass調用doSomething。 (補充說,對這個問題) –

回答

2

您的術語不穩定。類不「保留」其他類。在你的情況下,類MainViewController的實例有指針到類SomeClass的對象。我不迂腐;如此糟糕的術語會讓人懷疑自己對基礎和重要概念的理解。

也就是說,如果您希望SomeClass對象能夠將消息發送到MainViewController實例,SomeClass對象需要對MainViewController對象的引用。從您發佈的代碼中,不存在這樣的參考。您需要擴展SomeClass接口以存儲對MainViewController對象的明確引用,或者您可以通過委派使用稍微更加間接的(至少在概念上)的東西。但是,由於您未提供特定案例的信息,因此我們的解決方案將形成缺乏詳細信息的洞察。

+0

沒錯,我不太清楚確切的術語。我會盡量修復它。我想我正在尋找的是你提到的有關參考的後退。你能不能解釋一下如何創建這個參考,以及我能用它做什麼? –

+0

這樣做的主要原因是清理我的MainViewController文件。我不想在一個龐大的課堂上完成所有的入門和功能,而是想根據他們的工作將他們分成更小的課程。 –

+0

Coleman建議存儲引用後,我設法想出了一種解決此問題的方法: Add to SomeClass.h @property(strong,nonatomic)MainViewController * mainView; - (void)setMainView:(MainViewController *)thisMainView; 添加到SomeClass.m @synthesize MAINVIEW - (無效)setMainView:(MainViewController *)thisMainView { MAINVIEW = thisMainView; } 在主類中調用setMainView 那麼你可以在某些類中使用[mainView doSomething] 我在這裏發佈,因爲我不能自己回答。 –

相關問題