2013-08-19 40 views
0

我有問題從nsobject類調用我的viewController。在這裏我的代碼:ios從不同的類回調viewController

的ViewController:

-(void)startTest:(NSString*)testToRun 
{ 
    ViewController *ViewController = [[[ViewController alloc] init] autorelease]; 
    SecondClass *secondClass = [[SecondClass alloc] init]; 
    secondClass.viewController = viewController; 
    [secondClass doSomething]; 
} 

-(void) createView 
{ 
    UIView *newView = [UIView alloc] initWithFrame:[self.view bounds]; 
    self.newView.backgroundColor = [UIColor whiteColor]; 
    [self.view addSubview:newView]; 
    [self.view bringSubviewToFront:newView] 
} 


NSObject classe: 

.h file 

#import "ViewController.h" 

@class ViewController; 

@interface SecondClass : NSObject 
{ 
    ViewController *viewController; 
} 

@property (nonatomic,retain) ViewController *viewController; 

-(void) doSomething; 


.m file 

-(void) doSomething 
{ 
    [viewController createView]; 

} 

任何人可能都知道我在做什麼錯誤或我如何從我的NSObject類再打我的視圖控制器?

+0

檢查以確定viewController實際上仍然存在,並且在您調用它時不爲零。 – Jeff

+0

您使用ARC嗎? – Jeff

+0

在將視圖控制器的指針傳遞給nsboject類的時刻不是nill,而是在nsobject類中的時候是nil,我不明白爲什麼 – HelenaM

回答

1

你指的是實例變量viewController但分配財產viewController

默認情況下,該屬性自動合成爲名爲_viewController的實例變量。您可以將其更改爲顯式綜合到您的實例變量,但更具規範性的是使用缺省_viewController並在您的實現文件中將其稱爲self.viewController

+0

這就是我的想法。除非你在處理getter/setting的地方有其他代碼,否則這是HelenaM的問題。 – Jeff

0

我覺得你的問題出在下面的代碼

-(void)startTest:(NSString*)testToRun 
{ 
    ViewController *ViewController = [[[ViewController alloc] init] autorelease]; 
    SecondClass *secondClass = [[SecondClass alloc] init]; 
    secondClass.viewController = viewController; 
    [secondClass doSomething]; 
} 

我相信上面這段代碼在ViewController本身定義的,所以你應該做以下

-(void)startTest:(NSString*)testToRun 
{ 
    //ViewController *ViewController = [[[ViewController alloc] init] autorelease]; Don't do this, it is already initialized 
    SecondClass *secondClass = [[SecondClass alloc] init]; 
    secondClass.viewController = self;//assign self as reference 
    [secondClass doSomething]; 
} 

更多完美你也可以嘗試使用Protocols

+0

如果我使用secondClass.viewController = self; secondClass中viewController的實例爲nil。 – HelenaM

相關問題