наследование работает на симуляторе, но не на Iphone! - PullRequest
1 голос
/ 01 апреля 2011

Я столкнулся со странной ошибкой ... У меня есть класс, который расширяет другой, получая некоторые переменные из него.Это действительно просто.когда я компилирую код для симулятора, он прекрасно работает.Когда я запускаю в Iphone, он получает сообщение об ошибке, что vairable не установлен !.Код: заголовок родительского класса:

#import <UIKit/UIKit.h>
#import "TarefaMap.h"


@interface GenericTarefaTableView : UITableViewController {
TarefaMap* tarefaMap;
TarefaMap* tarefaMapOriginal;
}
@property (nonatomic, retain) TarefaMap* tarefaMap;
@property (nonatomic, retain) TarefaMap* tarefaMapOriginal;


@end

реализация родительского класса:

#import "GenericTarefaTableView.h"


@implementation GenericTarefaTableView
@synthesize tarefaMap,tarefaMapOriginal;


@end

заголовок дочернего класса:

@interface EditTarefaViewController : GenericTarefaTableView <UITextFieldDelegate , UITextViewDelegate> {

Tarefa* tarefa;
NSArray *fieldLabels;
UITextField *textFieldBeginEdited;
BOOL isEdit;
IBOutlet UITableViewCell *cell0;
IBOutlet UITextView* textView;
NSManagedObjectContext* context;



}

@property (nonatomic, retain)  NSManagedObjectContext* context;
@property (nonatomic, retain) IBOutlet UITextView* textView;
@property (nonatomic, retain) IBOutlet UITableViewCell *cell0;
@property (nonatomic, retain) Tarefa* tarefa;
@property (nonatomic, retain) UITextField* firstField;
@property (nonatomic, retain) NSArray *fieldLabels;
@property (nonatomic, retain) UITextField *textFieldBeingEdited;

@end

Реализация дочернего класса:

#import "EditTarefaViewController.h"

@implementation EditTarefaViewController



@synthesize tarefa, textFieldBeingEdited,firstField,fieldLabels,textView, cell0, context;
NSMutableArray *textFieldarray;
UIActionSheet *actionSheet;
UITableViewCell* cell1;


- (void)viewDidLoad
{


NSLog(@"ViewDidLoad");
[super viewDidLoad];
self.tarefaMap=[[TarefaMap alloc] initWithTarefa:tarefa];
self.tarefaMapOriginal=[[TarefaMap alloc] initWithTarefa:tarefa];

if ([tarefaMapOriginal isEqual:tarefaMap]) {
    NSLog(@"SOMOS IGUAIS!!!!!");
}
   NSLog(@"Comparando tarefas!!!!!");
if ([tarefaMapOriginal isEqualtoTarefaMap:tarefaMap]) {
    NSLog(@"SOMOS IGUAIS2!!!!!");
}
}

Это нормально компилируется на симуляторе, но когда я пытаюсь на IPhone, я получаю сообщение о том, что переменные tarefaMap не объявлены и должны быть объявлены в функции ...

любые мысли

1 Ответ

1 голос
/ 01 апреля 2011
@interface EditTarefaViewController : GenericTarefaTableView <UITextFieldDelegate , UITextViewDelegate> {

перед этой строкой добавьте

@class GenericTarefaTableView;

, затем в .m файл добавьте

import "GenericTarefaTableView.h"

и измените как в viewdidload

NSLog(@"ViewDidLoad");
[super viewDidLoad];
super.tarefaMap=[[TarefaMap alloc] initWithTarefa:tarefa];
super.tarefaMapOriginal=[[TarefaMap alloc] initWithTarefa:tarefa];


@implementation EditTarefaViewController

передчто вам нужно импортировать TarefaMap.h, а также объявить это в файле EditTarefaViewController.h с таким

@class TarefaMap;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...