IBAction, бутон и камера

Имам бутон в моя интерфейс, деклариран в .h файл

@interface UserProfileVC : UIViewController <UIImagePickerControllerDelegate>{
    IBOutlet UIButton *camera;
}
@property (nonatomic,retain) IBOutlet UIButton *camera;
-(IBAction)cameraPress:(id)sender;

И в моя .m файл имам:

-(IBAction)cameraPress:(id)sender{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
//  [picker setDelegate:self];
    [picker setAllowsEditing:YES];
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentModalViewController:picker animated:YES];
    [picker release];
}

Но имам тази грешка:

*** -[UserProfileVC performSelector:withObject:withObject:]: message sent to deallocated instance 0x7bc2a40

може ли някой да ми помогне Не мога да разбера каква е грешката. Благодаря


person PsyKoWebMari    schedule 09.06.2012    source източник
comment
погледнете тази връзка.   -  person hp iOS Coder    schedule 09.06.2012
comment
Добре, вмъкнах... и видях, че методът viewDidLoad се изпълнява 2 пъти... Защо?   -  person PsyKoWebMari    schedule 09.06.2012
comment
Сега имам: 2012-06-09 14:41:08.556 SQL[612:11603] INIT 0x7dac3f0 2012-06-09 14:41:08.557 SQL[612:11603] INIT 0x7da87c0 2012-06-09 14:41:10.475 SQL[612:11603] *** -[UserProfileVC performSelector:withObject:withObject:]: message sent to deallocated instance 0x7dac3f0   -  person PsyKoWebMari    schedule 09.06.2012
comment
Кодът, показан във вашия въпрос, е перфектен. Искам да покажете редовете от кода, който сте написали за извикване на метода -[UserProfileVC performSelector:withObject:withObject:] Редактирайте въпроса си съответно.   -  person hp iOS Coder    schedule 11.06.2012
comment
Извиквам класа UserProfileVC с този метод... -(void)showDetails:(id)sender{ NSLog(@"Annotation Click"); details= [[UserProfileVC alloc] initWithNibName: @"Details" bundle:nil ]; details.Nome=note.title; addNavigationController = [[UINavigationController alloc] initWithRootViewController:details]; [self.navigationController presentModalViewController:addNavigationController animated:YES]; }   -  person PsyKoWebMari    schedule 12.06.2012


Отговори (1)


Според кода от последния ви коментар,

-(void)showDetails:(id)sender{ 
NSLog(@"Annotation Click"); 
details= [[UserProfileVC alloc] initWithNibName: @"Details" bundle:nil ]; 
details.Nome=note.title; 
addNavigationController = [[UINavigationController alloc] initWithRootViewController:details]; 
[self.navigationController presentModalViewController:addNavigationController animated:YES]; 
}

Мога да ви предложа да следвате. Ако погледнете референтния документ за клас UIViewController, ще намерите бележки по-долу

presentModalViewController:animated:

Представя на потребителя модален изглед, управляван от дадения контролер на изгледа. (Отхвърлено. Използвайте presentViewController:animated:completion: вместо това.)

Така че бих ви предложил да използвате presentViewController:animated:completion. Не го намирам за свързано с грешката „съобщение, изпратено до освободен екземпляр“, но все пак проверете дали можете да разрешите проблема си.

Също така не знам защо написахте този ред

addNavigationController = [[UINavigationController alloc] initWithRootViewController:details]; 

Ако просто искате да покажете UserProfileVC в текущия UINavigationController, тогава бих ви предложил да премахнете реда addNavigationController и да пишете само

[self.navigationController presentViewController:details animated:YES completion:NULL];
person hp iOS Coder    schedule 13.06.2012
comment
Редактирах кода, докато пишете, userprofilevc работи по същия начин, но се инстанцира 2 пъти.| -(void)showDetails:(id)sender{ NSLog(@"Annotation Click"); details= [[UserProfileVC alloc] initWithNibName: @"Details" bundle:nil ]; details.Nome=note.title; details.coffeeObj=self.coffeeObj; [self presentViewController:details animated:YES completion:NULL]; } Както можете да видите е инициирано 2 пъти 2012-06-13 11:41:28.146 SQL[11463:11903] INIT 0x4e0b5f40 2012-06-13 11:41:28.156 SQL[11463:11903] INIT 0x4dcfbf40 - person PsyKoWebMari; 13.06.2012
comment
Откъде имаш този дневник? В кой метод поставяте NSLog? и какъв точно е проблемът, който имате сега? - person hp iOS Coder; 13.06.2012
comment
Вмъкнах nslog във viewDidLoad на userprofilevc... Проблемът беше същият от самото начало... Имам предвид двойното разпределение на потребителски profilevc... Всъщност - person PsyKoWebMari; 13.06.2012
comment
Вмъкнах nslog във viewDidLoad на userprofilevc... Проблемът беше същият от началото... Имам предвид двойното разпределение на потребителски profilevc... Всъщност тези 2 Nslog показват кода на два класа - person PsyKoWebMari; 13.06.2012