ios 开发遇到的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
nellace
V2EX    iDev

ios 开发遇到的问题

  •  
  •   nellace 2015-04-01 16:42:00 +08:00 3538 次点击
    这是一个创建于 3857 天前的主题,其中的信息可能已经有所发展或是发生改变。

    http://ww1.sinaimg.cn/bmiddle/686c6057jw1eqq5lsnu3gj20gn06bjta.jpg

    arrTitle数组是在.m中的全局变量,在viewDidLoad负值3个objects,然后下面就奇怪了
    在viewWillAppear还可以看到是3个objects,
    但是在viewDidAppear的时候arrTitle就变成0个objects。。。实在想不通。。。

    20 条回复    2015-04-02 13:29:20 +08:00
    nellace
        1
    nellace  
    OP
       2015-04-01 16:42:20 +08:00
    vincentxue
        2
    vincentxue  
       2015-04-01 16:47:19 +08:00
    很有可能是被重新初始化了,或者被移除了(如果是可变数组的话)。信息太少,很难判断。
    simman
        3
    simman  
       2015-04-01 16:50:35 +08:00
    同意楼上,并且重写 viewWillAppear 等,记得要 super 哦。
    nellace
        4
    nellace  
    OP
       2015-04-01 16:52:57 +08:00
    @vincentxue 因为 我问题排查 排查到最后,就锁定在了这两段之间了,中间也没有重新初始化,很是奇怪,xcode版本6.2
    vincentxue
        5
    vincentxue  
       2015-04-01 17:07:28 +08:00   1
    如果代码量不多的话建议贴个完整的代码看看,目前的信息只能靠猜。

    能不用全局变量就别用全局变量,必须用的话尽量用属性代替全局变量,虽然有一丁点的额外的消耗,但以目前的设备性能来说完全可以忽略不及。

    用属性也带来很多好处,其中之一就是如果碰到你这种问题,直接重写 setter 打个断点一步就能定位到错误点。
    expkzb
        6
    expkzb  
       2015-04-01 17:08:16 +08:00
    weak 还是 strong
    padthai
        7
    padthai  
       2015-04-01 17:14:57 +08:00
    得把。m全贴这才能分析
    pH
        8
    pH  
       2015-04-01 17:40:38 +08:00   1
    类似这个will did之类的的方法,一般都是要加上super的同名方法
    可以参考截图中viewDidAppear方法的第一行代码
    eternityz
        9
    eternityz  
       2015-04-01 17:42:17 +08:00
    把 &arrTitle 也打出来确认一下是不是同一个对象。
    nellace
        10
    nellace  
    OP
       2015-04-01 18:25:59 +08:00
    @simman
    @vincentxue
    @expkzb
    @padthai
    @pH
    @eternityz
    首先感谢各位,问题我找到了,项目不支持arc,navigation页面push过来的时候release掉了

    我写了一个demo,关掉arc,push之前release也会出现这样的问题,具体问题我还没弄清楚,问题点应该就在这了
    还有就是,公司这样的项目有必要以后我调整成arc嘛?
    pH
        11
    pH  
       2015-04-01 18:39:05 +08:00
    @nellace 当然要用ARC了一般。
    vincentxue
        12
    vincentxue  
       2015-04-01 19:05:32 +08:00
    现在除了某些大公司(例如腾讯)的老项目,基本上都是 ARC 了,而且很多大公司的老项目也已经迁移到 ARC 了,ARC 现在已经是标准了,ARC 普及有2-3年了,13年之前很多开源项目还是 MRC 的。

    建议先掌握 MRC 之后再使用 ARC,并且强烈推荐使用 ARC,你基本上很难再遇到内存相关的问题,如果你用的 ARC,那你就不会出现今天这个问题了。
    markss
        13
    markss  
       2015-04-01 20:39:37 +08:00   1
    @vincentxue
    @nellace 同意楼上,从10楼那段代码看,即使是MRC,那段代码也没有问题,alloc 引用计数+1, push 引用计数+1 release -1 ,不会造成tGsystemSet被释放,只有当pop回来的时候才会被释放。我觉得问题可能出在你数组初始化上面,你如果用的类方法初始化,那么就会造成数组提前进入自动释放池,建议用属性,或者类方法初始化时候retain一次。
    nellace
        14
    nellace  
    OP
       2015-04-01 21:15:18 +08:00
    @vincentxue 先对v大再次感谢,项目以后慢慢修改过度过去吧

    @markss先谢谢你哦, 问题确实是在这里,我自己写了一个最简单的demo,把项目arc选项选no,然后在self.navagation push新页面前release掉,和上面代码结构差不多,然后确实出现这个问题,今天调试了很久才找到问题点,具体问题我还是不太清楚,因为接触mrc很少,所以害的明天多研究下
    vincentxue
        15
    vincentxue  
       2015-04-01 22:08:58 +08:00
    @nellace 太过奖了,v大这个称呼我承受不起的,弄不好我年龄可能比你还小,而且个人水平真的配不上大这个称呼。
    @markss 的水平远高过我,之所以这么说是因为我们现实中是认识的。

    加油吧。
    markss
        16
    markss  
       2015-04-01 22:17:18 +08:00
    @vincentxue 别谦虚,F哥水平称一声V大不为过呀。
    nellace
        17
    nellace  
    OP
       2015-04-01 22:41:55 +08:00
    @markss
    @vincentxue
    都别谦虚 真爱 hoho
    ianisme
        18
    ianisme  
       2015-04-01 22:52:07 +08:00
    为了以后的版本 转化为ARC吧
    luoyibu
        19
    luoyibu  
       2015-04-02 13:20:05 +08:00
    arrTitle 声明的是retain吗? 在mrc下,那个地方的release是必须要调用的,不然会内存泄露。
    nellace
        20
    nellace  
    OP
       2015-04-02 13:29:20 +08:00
    @luoyibu 原来如此,加了retain好了,不过为了以后维护代码代价小点,正在调整arc中,谢谢啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5203 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 07:31 PVG 15:31 LAX 00:31 JFK 03:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86