получение EXC_BAD_ACCESS при доступе к объекту в SubView

Может быть, очень простая проблема, но я не понимаю...

Я написал свой собственный класс для использования данных в качестве объекта в моем приложении для iPhone. Класс имеет тип NSObject. Класс имеет несколько свойств NSString, а также три объекта других классов.

@interface vcardItem : NSObject {
vCardNitem *PersonName;
NSString *Phone;
NSString *PhotoURL;
vCardTELitem *PhoneData;
NSString *URL;
NSString *eMail;
vCardADRItem *Address;
NSString *Company;
NSString *Role;
int initialised;
}

@property (nonatomic, retain) vCardNitem *PersonName;
@property (nonatomic, retain) NSString *Phone;
@property (nonatomic, retain) NSString *PhotoURL;
@property (nonatomic, retain) vCardTELitem *PhoneData;
@property (nonatomic, retain) NSString *URL;
@property (nonatomic, retain) NSString *eMail;
@property (nonatomic, retain) vCardADRItem *Address;
@property (nonatomic, retain) NSString *Company;
@property (nonatomic, retain) NSString *Role;
@property int initialised;

-(id)initEmpty;
-(id)initWithPayload:(NSString *)payload;
-(void)sendToAddressBook;
-(void)debugVCard;
-(NSString *)getFirstName;
@end

Я создаю объект vcardItem в вызове функции в моем контроллере представления. Данные заполнены и доступны. Вызывается функция initWithPayload и устанавливаются все свойства.

Затем я открываю другое представление для отображения сведений и вызываю функцию setVCard с моим объектом vcardItem (который по-прежнему полностью доступен):

VCardViewController *aVCardViewController = [[VCardViewController alloc] init];
[self presentModalViewController:aVCardViewController animated:YES];
[aVCardViewController setVCard:aVCard];

в VCardViewController доступны только свойства NSString. Как только я пытаюсь получить доступ к свойствам VCardNItem, vCardADRitem или vCardTELitem, я получаю сообщение об ошибке EXC_BAD_ACCESS.

Похоже, что объекты внутри объекта vcardItem недоступны!?

Я установил NSZombie..., мой объект vcardItem все еще жив (без «Зомби»), но я не могу получить доступ к данным.

Есть идеи? Я немного застрял здесь....


person MadMaxAPP    schedule 16.12.2010    source источник
comment
Попробуйте следующее: VCardViewController *aVCardViewController = [[VCardViewController alloc] init]; [aVCardViewController setVCard:aVCard]; [самостоятельный PresentModalViewController:анимированный aVCardViewController:YES];   -  person Satya    schedule 16.12.2010
comment
Это просто соглашение, но в какао/какао-прикосновении вы пишете имена классов, начинающиеся с прописной или прописных букв (обычно берутся из соответствующей структуры), а имена переменных не начинаются с прописных. Вы делаете это наоборот   -  person nacho4d    schedule 16.12.2010
comment
@satya: Если я поменяю местами два оператора, в результате в aVCardViewController не будет данных.   -  person MadMaxAPP    schedule 16.12.2010
comment
Я не могу понять, почему это происходит. Теперь я изменил viewController. С initWithPayload:(NSString *)payload viewController создает объект vCardItem. Объект доступен во время viewDidLoad, все данные правильно отображаются в представлении. Затем у меня есть кнопка, подключенная в IB к IBAction. Если я нажму кнопку, я все равно получу EXC_BAD_ACCES в IBAction, если попытаюсь получить доступ к данным. Если я проверю объект в отладчике, объект все еще живет, там нет Zombie-Entry.   -  person MadMaxAPP    schedule 16.12.2010
comment
@MadMaxApp: поменяйте местами два оператора, поместите nslog перед оператором setVcard и распечатайте объект aVcard. и распечатать то же самое после настройки. проверьте, печатает ли он правильные значения.   -  person Satya    schedule 17.12.2010
comment
Ok. Если я NSLog aVCard объекта vcardItem, я вижу в консоли ‹vCardItem›. Я могу прочитать все данные, определенные в самом классе vCardItem, в моем объекте. Если я NSLog, объект vCardNitem, который находится внутри vCardItem aVCard, отображается в консоли ‹vCardNitem: 0x190b80›, что также правильно. Если я NSLog переменная экземпляра Firstname с aVCard.PersonName.Firstname, я снова получаю ошибку EXC_BAD_ACCESS. Я установил точку останова для просмотра переменной экземпляра в отладчике. Переменная экземпляра FirstName имеет тип NSSting...   -  person MadMaxAPP    schedule 17.12.2010
comment
Сделал некоторый обзор кода, и после его сборки в Xcode 4 против iOS 5 все в порядке!   -  person MadMaxAPP    schedule 06.11.2011


Ответы (1)


Обзор кода сделал свое дело, после сборки в Xcode 4 против iOS 5 все в порядке!

person MadMaxAPP    schedule 06.11.2011