UIPopoverController在ARC环境下用法注意
在ARC環(huán)境下如果便用以下代碼:
?
[cpp] view plaincopyprint?- UIViewController?*viewTwo;??
- viewTwo?=?[[ViewTwo?alloc]?initWithNibName:@"ViewTwo"?bundle:nil];??
- ??
- UIPopoverController?*popover;??
- popover?=?[[UIPopoverController?alloc]?initWithContentViewController:viewTwo];????
- ??
- [popover?presentPopoverFromRect:[theButton?bounds]???
- ?????????????????????????inView:theButton???
- ???????permittedArrowDirections:UIPopoverArrowDirectionLeft???
- ???????????????????????animated:NO];??
UIViewController *viewTwo;
viewTwo = [[ViewTwo alloc] initWithNibName:@"ViewTwo" bundle:nil];UIPopoverController *popover;
popover = [[UIPopoverController alloc] initWithContentViewController:viewTwo]; [popover presentPopoverFromRect:[theButton bounds] inView:theButton permittedArrowDirections:UIPopoverArrowDirectionLeft animated:NO];
結(jié)果會(huì)crash,原因是ARC環(huán)境下,popover是它的作用域中是有效的,如果起出其作用域就會(huì)被編譯器加入的release釋放內(nèi)存。由于當(dāng)前popup還在顯示期,而controller被回收了,所以會(huì)出現(xiàn)crash。xcode的console里crash的reason就有說(shuō)明。
?
?
于是在ARC環(huán)境下正確的做法是保持popover的生命周期。讓popover是strong類型的成員變量或?qū)傩浴?當(dāng)收到UIPopoverController dismiss的消息的時(shí)候?qū)opover=nil;這樣就可以正常便用了。如:
?
?
[cpp] view plaincopyprint?- -?(void)popoverControllerDidDismissPopover:(UIPopoverController?*)popoverController??
- {??
- ????popover?=?nil;??
- }??
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{popover = nil;
}
還有在iPad下使用UIImagePickerController的時(shí)候得注意了,如果它的sourceType是UIImagePickerControllerSourceTypeCamera則可以用[self
presentModalViewController:vc animated:Yes];的方法顯示UIImagePickerController的view用于照相,如果sourceType是UIImagePickerControllerSourceTypePhotoLibrary或UIImagePickerControllerSourceTypeSavedPhotosAlbum 相片選擇的UIImagePickerController,那么得將UIImagePickerController放在UIPopoverController中才能正常顯示。這是iPad下的規(guī)則。
轉(zhuǎn)載于:https://www.cnblogs.com/zhwl/archive/2013/01/05/2846173.html
總結(jié)
以上是生活随笔為你收集整理的UIPopoverController在ARC环境下用法注意的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 有国才有家是哪首歌啊?
- 下一篇: 精索静脉曲张与不孕不育有关系吗