Я создал новый класс, который обрабатывает кнопку. Это ничего не делает (только для теста, метод чист). Он освобождается сразу после запуска, и когда я нажимаю кнопку, приложение вылетает с EXC_BAD_ACCESS.
Это мой .h файл класса:
@interface pagechanger : NSObject {
}
- (IBAction)gonext:(id)sender;
@end
Файл реализации:
@implementation pagechanger
- (IBAction)gonext:(id)sender{
// blablabla, some code which is even hasn't been read, breakpoints were not touched.
}
-(void)dealloc{
NSLog(@" pc released");
[super dealloc];
}
@end
Список консоли (NSZombieEnabled включен):
[11724: 207] * - [pagechanger
performSelector: withObject: withObject]:
сообщение отправлено на освобожденный экземпляр
0x4b35900
Вот что возвращает «info malloc-history address »:
Alloc: Block address: 0x04b35900 length: 16
Stack - pthread: 0xa0180540 number of frames: 36
0: 0x9154e103 in malloc_zone_calloc
1: 0x9154e05a in calloc
2: 0x105cd0f in _internal_class_createInstanceFromZone
3: 0x105f87d in class_createInstance
4: 0xe2cff8 in +[NSObject(NSObject) allocWithZone:]
5: 0xe2cdfa in +[NSObject(NSObject) alloc]
6: 0x4ab205 in -[UIClassSwapper initWithCoder:]
7: 0x5919e4 in UINibDecoderDecodeObjectForValue
8: 0x592693 in -[UINibDecoder decodeObjectForKey:]
9: 0x4aaf43 in -[UIRuntimeConnection initWithCoder:]
10: 0x4ab4b1 in -[UIRuntimeEventConnection initWithCoder:]
11: 0x5919e4 in UINibDecoderDecodeObjectForValue
12: 0x5912dc in UINibDecoderDecodeObjectForValue
13: 0x592693 in -[UINibDecoder decodeObjectForKey:]
14: 0x4aa200 in -[UINib instantiateWithOwner:options:]
15: 0x4ac081 in -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:]
16: 0x364a94 in -[UIViewController _loadViewFromNibNamed:bundle:]
17: 0x362709 in -[UIViewController loadView]
18: 0x2607 in -[ZoomingPDFViewerViewController loadView] at /Users/ruzard/Desktop/ZoomingPDFViewer/Classes/ZoomingPDFViewerViewController.m:92
19: 0x3625e3 in -[UIViewController view]
20: 0x2231 in -[ZoomingPDFViewerAppDelegate application:didFinishLaunchingWithOptions:] at /Users/ruzard/Desktop/ZoomingPDFViewer/Classes/ZoomingPDFViewerAppDelegate.m:65
21: 0x2b51fa in -[UIApplication _callInitializationDelegatesForURL:payload:suspended:]
22: 0x2b755e in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:]
23: 0x2c1db2 in -[UIApplication handleEvent:withNewEvent:]
24: 0x2ba202 in -[UIApplication sendEvent:]
25: 0x2bf732 in _UIApplicationHandleEvent
26: 0x183ea36 in PurpleEventCallback
27: 0xeea064 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
28: 0xe4a6f7 in __CFRunLoopDoSource1
29: 0xe47983 in __CFRunLoopRun
30: 0xe47240 in CFRunLoopRunSpecific
31: 0xe47161 in CFRunLoopRunInMode
32: 0x2b6fa8 in -[UIApplication _run]
33: 0x2c342e in UIApplicationMain
34: 0x21c4 in main at /Users/ruzard/Desktop/ZoomingPDFViewer/main.m:54
35: 0x2155 in start
Я пытаюсь модифицировать код Apple (ZoomingPDFViewer). Я не мог найти способ добавить новые кнопки там ... поэтому я сделал новое окно программно и добавил в него подпредставление. Однако я не знаю, может ли этот код помочь или нет ...
UIWindow* window = [UIApplication sharedApplication].keyWindow;
if (!window) {
window = [[UIWindow alloc] initWithFrame:CGRectMake(0, 980, 500, 500)];
window.hidden = NO;
[window becomeKeyWindow];
window.windowLevel = UIWindowLevelStatusBar;
}
[window addSubview:myheader];
Вы можете получить оригинальный код здесь .
Как мне заставить мой метод работать без EXC_BAD_ACCESS?