无法访问我的App委托属性和& ios 4.3中另一个类的方法

时间:2011-05-10 10:04:51

标签: objective-c ios

我有一个非常奇怪的问题。让我先把代码发给你

在我的appdelegate.h

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "SecondViewController.h"

@class MasterViewController;
@class DetailViewController1;


@interface TestAppDelegate : NSObject <UIApplicationDelegate> {


   NSTimer *tempTimer;

}


@property(nonatomic, retain) NSTimer *tempTimer;


-(void)test;


@end


In my app delegate .m

@synthesize tempTimer

在我的SecondViewController.h

@class TestAppDelegate;

@interface SecondViewController : UIViewController
{


    TestAppDelegate *appDel;
    NSTimer *aTimer;

}


@property (nonatomic, retain) NSTimer *aTimer;


@end

在我的SecondViewController.m

@synthesize   aTimer, appDel;

viewDidload方法

appDel =(TestAppDelegate *)[[UIApplication sharedApplication] delegate];
self.aTimer = appDel.tempTimer;

现在我收到以下错误

*在“TestAppDelegate ”类型的对象上找不到属性“tempTimer”

2 个答案:

答案 0 :(得分:1)

原因是,您已在SecondViewController中声明了TestAppDelegate,因此无法访问这些属性。我认为你这样做的原因是为了避免这些类之间的循环依赖。您有两种选择:

  • 在SecondViewController.m中导入TestAppDelegate.h。
  • 删除循环依赖项并在SecondViewController.h中导入TestAppDelegate而不是@class TestAppDelegate;

答案 1 :(得分:1)

只需将#import“appdelegate.h”添加到SecondViewController.m的顶部你不需要将它添加到头文件的顶部,因为这样做会导致所有使用SecondViewController的类也导入appdelegate.h但是通过在m文件中执行此操作,它仅导入与SecondViewController.m

相关的方法