2011-07-05 7 views
1

私は、デバッグ時に期待通りにビルドして実行するiOSプロジェクトを持っていますが、リリース用にビルドされるとコンパイルエラーが発生します。エラーは、スーパークラスで宣言されイヴァーと行うことです、それはここでは、具体的スーパークラス/サブクラスのビルドの相違点をデバッグ/リリース

'fetchedResultsController_' undeclared (First use in this function). 

あるスーパークラスの.hです。

@interface Super : UIViewController <NSFetchedResultsControllerDelegate> { 
    NSFetchedResultsController* fetchedResultsController_; 
    NSManagedObjectContext* managedObjectContext_; 
} 

@property (nonatomic, retain) NSFetchedResultsController* fetchedResultsController; 
@property (nonatomic, retain) NSManagedObjectContext* managedObjectContext; 

@end 

及びスーパー.M

@implementation Super 

@synthesize fetchedResultsController = fetchedResultsController_; 
@synthesize managedObjectContext = managedObjectContext_; 

#pragma mark - 
#pragma mark Properties 

-(NSFetchedResultsController*)fetchedResultsController { 
    return nil; 
} 

サブクラスインターフェイスは、このように定義される: - サブクラス.Mで

@interface Sub : Super <UIActionSheetDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate> { 
    // extra stuff 
} 

IはfetchedResultsController

-(NSFetchedResultsController*)fetchedResultsController { 

    if (fetchedResultsController_ == nil) { // undeclared error here.... 
    //stuff 
    } 
    return fetchedResultsController_; 
ための遅延ロードを実装

私は混乱していますこれはデバッグではなく、リリースではうまくいかない理由がわからないからです!誰かが問題が何であるかを識別することができれば

私はこれがあなたの質問への答えではありません大幅

答えて

1

それをいただければと思いますが、それは問題が離れて行くようになります。

Superクラスでは、インスタンス変数をまったく持たないことは無意味です。おそらく、プロパティーreadOnlyを設定して、それを使用している人がfetchedResultControllerプロパティーの設定が許可されていないことを知っておく必要があります。物事が立てば、人々は物件を設定すると、物件を読むときに何かを得ることができるという合理的な期待があります。

したがって、インスタンス変数をサブクラスに移動します。スーパークラスでプロパティreadOnlyを宣言し、サブクラスでreadWriteを再宣言します。

+0

私はそれを搭載し、変更を加えた後に問題が解決されました。しかし、私は「このスーパークラスが必要なのは何ですか?」と考えました。ちょうどプロジェクトからそれを取り除いた! – Damo

+0

@Damo::-) .... – JeremyP