iOS中从加载的xib中得到的控件为空的问题

来源:互联网 发布:php微信源码下载 编辑:程序博客网 时间:2024/05/19 15:40

 jTreatIpadLookViewController=[[JTreatIpadLookViewControlleralloc]initWithNibName:@"JTreatIpadLookViewController"bundle:nil];

这是我加载xib的方式,,但是我打印其中的button总是为空,,其他的控件也是这种情况:


我经历了几个痛苦的过程,

1.首先我测试了一下,在autolayout  和sizeClass下不同的情况,因为网上有人说sizeClass可能引起这种情况,,但是没有解决,,

2.我测试了iOS 的不同版本,,问题出现了,,在iOS9中,,没有这种问题,,而是只在iOS8才会出现(郁闷,,不能跟客户说,叫他升级吧)所以发现问题基本没什么用,,

3.。我静静的观察代码,想了一下,,为什么会出现这种情况,,我知道的只有两种情况 (1.没有初始化,2.就是控件被释放了)


@interface JTreatIpadLookViewController ()<UIScrollViewDelegate,UICollectionViewDelegate,UICollectionViewDataSource>

{


    __weakIBOutlet UIButton *forceUpdateButton;

    __strongIBOutlet UIScrollView *scrollerLook;

    NSMutableArray *pathPhoto;

    UIScrollView *downPhotoScroller;

}

@end


@implementation JTreatIpadLookViewController

发现了一点问题,,我在interface中拖来的xib控件,,看到了都是__weak突然想到是不是__weak的原因,,所以我吧他改成了__strong 类型的,bingo,,问题解决了,,

但是为什么会出现这种请情况,,因为我们用了ARC以后内存释放的问题基本不会出现了,,

最后在build setting里面发现这个文件居然用了MRC模式,,气死我了,,


所以问题找到了,在iOS8出现这种请情况,,看看你的文件是不是用了MRC模式,造成了提前释放控件


 


0 0