关于Objective-c内存、异常和僵尸的若干初级问题

iOS 码拜 9年前 (2015-05-04) 681次浏览 0个评论
 

内存问题:
使用xcode4.02自带的Instruments测试工具检测代码时发现执行同一段代码有时会查出内存泄漏,有时又查不出,这是为何?是否项目通过Instruments的检测就代表该项目绝对不会在运行时出现内存溢出,还是说Instruments只能做到静态的分析代码,指出代码编写上的明显问题?

该段随机检出内存异常的代码段如下:

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    
    static NSString *CellIdentifier = @"Cell";  
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
    if (cell == nil) {  
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];  
    }  
    
    NSString *cellText = [NSString stringWithFormat:@"音频文件%d",(indexPath.row +1)]; //内存溢出
    cell.textLabel.text = cellText; 
    if ([cellText isEqualToString:selectText]) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        thisIndexPath = indexPath; 
    }
    return cell;  
}

异常问题:
如何为一个方法声明异常,从而使该方法的调用者必须在编译期为其套上try-catch?(类似于java或C#的void funcName(Param1 param1) throws MyException)

为何ios平台应用不建议我们使用异常?

另:
xcode4.02如何开启僵尸及其日志?

———————-
问题多了点,还请各位前辈帮助下晚辈,在此先谢谢大家了。

关于Objective-c内存、异常和僵尸的若干初级问题
我自己顶一下。
关于Objective-c内存、异常和僵尸的若干初级问题
50分
JAVA的异常处理本身就不好。
所以自然IOS没有必要学不好的东西。
C/C++的异常处理很好的可以在IOS下工作。
关于开启僵尸和日志。
你可以在项目的Edit SCHEMA和Build的一些设置中修改和开启。
关于Objective-c内存、异常和僵尸的若干初级问题
20分
开启僵尸:
方法一,添加环境变量, 在菜单中,选择Product->Edit Schema, 选择Run (App Name), 在Arguments下面的Environment Variables中,添加NSZombieEnabled, Value值为YES。
方法二,打开Diagnostics, 同样在菜单中选择Product -> Edit Schema, 选择Run (App Name), 在Diagnostics下,打开Memory Management下的Enable Zombie Objects
关于Objective-c内存、异常和僵尸的若干初级问题
回三楼,我用了方法一无明显效果。。。。
方法二Memory Management下没有Enable Zombie Objects勾选框。
关于Objective-c内存、异常和僵尸的若干初级问题
15分
代码无内存泄露,有时工具会显示不对。
关于Objective-c内存、异常和僵尸的若干初级问题
15分
不过这个instrument里面有的地方还真没看懂,有的地方显示的好奇怪,也请高手能否对Instrument来个指点

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于Objective-c内存、异常和僵尸的若干初级问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!