我有一個非常奇怪的問題,我想我知道我爲什麼得到它,但我似乎無法想到修復。我確信這裏沒有編譯器錯誤。我有很多這些,所有這些都是因爲我的錯誤代碼而發生的。我基本上有一個名爲UnlockKeyboardViewController的視圖控制器,它繼承自UIViewController和一個名爲UnlockKeyboard的自定義視圖(直接從UIView繼承)。對於UnlockKeyboard頭看起來是這樣的:「編譯器錯誤」,「分割錯誤11」在自定義視圖控制器上
@interface UnlockKeyboard : UIView
{
NSArray *buttons;
NSArray *passcodeFields;
UIImage *buttonBackgroundImage;
UIImage *buttonBackgroundHighlightedImage;
UIImage *middleButtonBackgroundImage;
UIImage *middleButtonBackgroundImageHighlighted;
UIImage *screenBackgroundImage;
UIImage *infoViewContainerImage;
UIImage *keypadViewContainerImage;
UIImage *passcodeFieldsContainerImage;
UIImage *infoViewImage;
UIImage *passcodeViewImage;
UIView *infoViewContainer;
UIView *keypadViewContainer;
UIView *passcodeFieldsContainer;
UIView *infoView;
UIView *keypadView;
UIView *passcodeFieldsView;
UIView *infoToDisplayView; //The view the programmer passes to show in infoView.
}
@property(nonatomic, retain)UIImage *buttonBackgroundImage;
@property(nonatomic, retain)UIImage *buttonBackgroundHighlightedImage;
@property(nonatomic, retain)UIImage *screenBackgroundImage;
@property(nonatomic, retain)UIImage *keypadViewBackgroundImage;
@property(nonatomic, retain)UIImage *infoViewContainerImage;
@property(nonatomic, retain)UIImage *keypadViewContainerImage;
@property(nonatomic, retain)UIImage *passcodeFieldsContainerImage;
@property(nonatomic, retain)UIImage *infoViewImage;
@property(nonatomic, retain)UIImage *passcodeViewImage;
@property(nonatomic, retain)UIView *infoToDisplayView;
//Properties for container views.
@property(nonatomic, retain)UIView *infoViewContainer;
@property(nonatomic, retain)UIView *keypadViewContainer;
@property(nonatomic, retain)UIView *passcodeFieldsContainer;
@end
的UnlockKeyboardViewController實現看起來像這樣至今:
@implementation UnlockKeyboardViewController
-(id)init
{
if((self = [super init]))
{
self.view = [[UnlockKeyboard alloc] init];
}
return self;
}
-(void)viewDidLoad
{
[super viewDidLoad];
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[UIView animateWithDuration:0.7 animations:^{
self.view.keypadViewContainer.frame = CGRectMake(0, 261, 320, 200);
} completion:^(BOOL finished){
}];
}
-(void)dealloc
{
[super dealloc];
}
@end
這是我的問題變得有趣。每當我嘗試編譯,終端(這是一個越獄的應用程序,所以沒有Xcode中)給了我以下錯誤:
In function ‘void __-[UnlockKeyboardViewController viewDidAppear:]_block_invoke_1(void*)’:
Segmentation fault: 11
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
,但這個錯誤,只有當我在這行出現:
self.view.keypadViewContainer.frame = CGRectMake(0, 261, 320, 200);
如果我沒有在我的動畫塊的那一行,編譯器不會給我那個錯誤,它會編譯得很好。雖然,無論我把這條線,我總是得到分割線11.
我認爲這可能與UIView沒有一個名爲keypadViewContainer成員的事實,雖然UnlockKeyboard具有該屬性,是UIView的一個子類。我相信這是因爲編譯器實際上看不到UIView和UnlockKeyboard之間的類層次結構。
如果我是對的,我不知道如何解決問題。一直在想。任何輸入來幫助我解決這個問題將非常感激。
您正在使用您的視圖控制器榫文件?如果沒有,'loadView'的基本實現會將你的'UnlockKeyboardViewController'的'view'屬性設置爲一個常規的'UIView',否定你在'init'中做了什麼(你不應該在' init')。 – omz 2012-07-29 01:59:27
你說「no Xcode」;你在用什麼編譯器? – benzado 2012-07-29 02:00:32
omz:我認爲你是對的。我應該嘗試在loadView中做這個任務嗎?我沒有使用任何筆尖或任何東西。這是純代碼,因爲我沒有使用XCode。我不使用XCode越獄應用程序。 benzado:仍在使用GCC。我只是沒有使用XCode作爲我的IDE。 – 2012-07-29 02:02:24