2012-05-10 13 views
0

このエラーは非常に奇妙です。私はアクセスするのに問題がないアプリケーションデリゲートのプロパティの束を持っています。私のコードはARCなしで正常に動作しましたが、ARCをオンにすると、私はこの非常に奇妙なエラーを受け取ります。 プロパティ 'navigationController'が 'AppDelegate *'タイプのオブジェクトに見つかりませんプロパティ 'x'がタイプ 'y *'のオブジェクトに見つかりませんでした。ARCの場合のみエラー

他のプロパティの束はこれ以外はうまく動作します。

私はすでにすべてをクリーンアップし、Xcodeを再起動しました。

AppDelegate.h:

@interface AppDelegate : UIResponder <UINavigationControllerDelegate> { 
    UINavigationController *navigationController; 
    NSString *appName; 
} 
@property (strong, nonatomic) NSString *appName; 
@property (strong, nonatomic) UINavigationController *navigationController; 

AppDelegate.m

#import "AppDelegate.h" 
    @synthesize navigationController, appName; 

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
     appName = [NSString stringWithString:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]]; 
     navigationController = [[UINavigationController alloc] initWithRootViewController:self.startViewController]; 
} 

MyClass.h

@class AppDelegate; 
@interface MyClass: UIResponder { 
    AppDelegate *appDelegate; 

} 

MyClass.m

ここ

コードであります

#import "AppDelegate.h" 
#import "MyClass.h" 

@implementation MyClass 
- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     // Initialization code here. 
     appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
     [self initFacebook]; 
    } 
    return self; 
} 

- (void) doStuff { 
    NSLog(@"App Name:%@",appDelegate.appName); //this works fine 

    //This one doesn't 
    UINavigationController *myNavigationController = appDelegate.navigationController; 
} 

更新: 私は回避策を行いました。基本的に私はnavigationViewControllerという名前のMyClassにプロパティを作成し、MyClassがMyCLassのAppDelegateから直接取得するのではなく、AppDelegateでインスタンス化された後にオブジェクトを渡します。私はまだ困惑している、それはコンパイラのバグでなければならない。私はまだ元のコードを動作させる方法に非常に興味があります。

答えて

4

MyClass.mでは、 "MyClass.h"ではなく "MyClass"をインポートしています。これが問題だろうか?

場合によっては、オーガナイザウィンドウを開いてプロジェクトタブでプロジェクトを選択し、ボタンをクリックして派生データを削除する必要があります。

+0

申し訳ありませんが、タイプミスでした。コードはかなり長くなりました。それはARCフラグなしでうまくコンパイルされます。私は、ARCフラグがないためにコードが漏れていることを示したAnalyzeを実行すると、アプリを提出しようとしていました。私は旗とバンを取り除いた!私はエラーが発生しました。これは、10のビューコントローラを持つ複雑なアプリケーションで、他のファイルはうまくコンパイルされます。 – Tibidabo

0

OK、私は問題に見られるように問題のあるコードだけを空のプロジェクトに入れます。それはうまくコンパイルされます。私はXcodeのバグ、あるいはいくつかの設定でなければならないと結論づけました。 とにかく何がうまくいかなかったのか分からないので、MyClassがAppDelagateでインスタンス化されたときに問題のオブジェクト(navigationController)を渡すだけです。 1つのオブジェクトでうまくいけば、ありがたいことに他のすべてのappDelegateプロパティ/セレクタにアクセスできます。

関連する問題