這裏的問題是:我想顯示如GIF效果iOS設備上測序圖,我用的UIImageView動畫功能,所以在下面實現的方法:爲什麼在objective-c發生衝突返回類型時發生這種情況?
// Animation.m
// @files: diagrams' array
// @fileDir: file directory
// @imageview: Just UIImageView
//
- (void)showSeqDiagram:(NSArray*)files
fileDirect:(NSString*)fileDir
imageView:(UIImageView*)imageview
{
int cnt = [files count];
NSMutableArray * images = [NSMutableArray arrayWithCapacity:cnt];
for (id file in files)
{
NSString * imageName = [NSString stringWithFormat:@"%@/%@", fileDir, file];
UIImage * image = [UIImage imageNamed:imageName];
if(!image)
continue;
[images addObject:image];
}
imageview.animationImages = images;
imageview.animationDuration = 5;
imageview.animationRepeatCount = 1;
[imageview startAnimating];
}
到這裏,一切都很順利。我在頭文件中這樣做了關於返回類型聲明錯誤:
//Animation.h
- (UIImageView*)showSeqDiagram:(NSArray*)files
fileDirect:(NSString*)fileDir
imageView:(UIImageView*)imageview;
,我調用這個方法 - (空)的loadView
- (void)loadview
{
......
[self showSeqDiagram:files fileDirect:fileDir imageView:imageview];
......
}
然後在調用位置崩潰,在iPhone5模擬器和設備上,iOS版verison9.3上拋出EXC_BAD_ACCESS(code = 1,);
偶爾墜毀iPhone6模擬器,iOS的version9.3;
從未墜毀iPhone6/6plus設備和iPhone6plus模擬器,在iOS 7-9測試了。
我知道這是錯的,但想知道爲什麼這個happend,可能有人給出一個解釋嗎?在此先感謝〜
你在哪裏拍攝imageView,是在故事板/ Xib還是編程? – Janmenjaya
修改返回類型,以便在.h和.m中使用相同的方法。嘗試設置斷點以找出該方法(行)上的問題究竟在哪裏,或者是因爲方法聲明與其實現不匹配。 – Larme
你可以嘗試在* .h和* .m中修改不同的返回值,編譯器只會發出警告,而且它也可以在其他文件中調用,並且它們確實匹配。嘗試一下! –