• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > 用swift在做的一个DEMO,一直报内存泄漏的错误,怎么解决?

用swift在做的一个DEMO,一直报内存泄漏的错误,怎么解决?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了swift错误,taylor swift,swift,swift code是什么意思,taylor swift演唱会等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 用swift在做的一个DEMO,一直报内存泄漏的错误,怎么解决?
描述:

用swift做的一个DEMO,写的假数据,可以运行,但是刚运行就崩溃,报错信息是:[__NSArrayM objectAtIndex:]: index 18 beyond bounds [0 .. 17]跪求大神帮助,小弟叩谢. 代码稍长...

var data:NSArray?//传递过来已经组织好的数据
var tempData:NSMutableArray?//用于存储数据源

init(frame:CGRect,data:NSArray) {
    
    super.init(frame: frame, style: UITableViewStyle.grouped)
    self.delegate = self
    self.dataSource = self
    self.data = data
    self.tempData = self.createTempData(data: data) as NSMutableArray
    
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}


//初始化数据源

func createTempData(data:NSArray) -> NSMutableArray{
    
    let tempArray = NSMutableArray()
    for i in 0...data.count {
        let node:Node = data.object(at: i) as! Node
        if (node.expand)! {
            tempData?.adding(node)
        }
    }
    return tempArray
}
//MARK:UITableViewDataSource
//MARK:Required


func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    
    return (tempData?.count)!
    
}

//以下是写的假数据以及TableView

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    
    self.initData()
    
}

func initData(){
    let country1:Node = Node.init(parentID: -1, nodeID: 0, name: "中国", depth: 0, expand: true)
    let province1:Node = Node.init(parentID: 0, nodeID: 1, name: "陕西", depth: 1, expand: false)
    let city1:Node = Node.init(parentID: 1, nodeID: 2, name: "西安", depth: 2, expand: false)
    let county1:Node = Node.init(parentID: 2, nodeID: 3, name: "长安", depth: 3, expand: false)
    let county2:Node = Node.init(parentID: 2, nodeID: 4, name: "韦曲", depth: 3, expand: false)
    let city2:Node = Node.init(parentID: 1, nodeID: 5, name: "宝鸡", depth: 2, expand: false)
    let county3:Node = Node.init(parentID: 5, nodeID: 6, name: "扶风", depth: 3, expand: false)
    let county4:Node = Node.init(parentID: 5, nodeID: 7, name: "眉县", depth: 3, expand: false)
    let province2:Node = Node.init(parentID: 0, nodeID: 8, name: "浙江", depth: 1, expand: false)
    let city3:Node = Node.init(parentID: 8, nodeID: 9, name: "杭州", depth: 2, expand: false)
    let city4:Node = Node.init(parentID: 8, nodeID: 10, name: "嘉兴", depth: 2, expand: false)
    let county5:Node = Node.init(parentID: 10, nodeID: 11, name: "嘉善", depth: 3, expand: false)
    let county6:Node = Node.init(parentID: 10, nodeID: 12, name: "南湖", depth: 3, expand: false)
    
    let country2:Node = Node.init(parentID: -1, nodeID: 13, name: "美国", depth: 0, expand: true)
    let province3:Node = Node.init(parentID: 13, nodeID: 14, name: "德州", depth: 1, expand: false)
    let city5:Node = Node.init(parentID: 13, nodeID: 15, name: "休斯顿", depth: 2, expand: false)
    let city6:Node = Node.init(parentID: 13, nodeID: 16, name: "圣安东尼奥", depth: 2, expand: false)
    let county7:Node = Node.init(parentID: 16, nodeID: 17, name: "邓肯", depth: 3, expand: false)

    
    let data:NSMutableArray = [country1,country2,province1,province2,province3,city1,city2,city3,city4,city5,city6,county1,county2,county3,county4,county5,county6,county7]
    
    let rect = CGRect(x: 0, y: 20, width: self.view.frame.size.width, height: self.view.frame.size.height)
    
    let tableView:TreeTableView = TreeTableView.init(frame: rect, data: data)
    self.view.addSubview(tableView)
}

解决方案1:

for循环这里,for i in 0...data.count,你这样写是0到data.count,而你实际需要的是0到data.cout-1,所以就会造成数组越界。
把for循环改成for i in 0..<data.count 就可以了


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 用swift在做的一个DEMO,一直报内存泄漏的错误,怎么解决?
  • 在swift中调用indexPathrow错误

相关文章

  • 2017-06-05 IOS开发了一个新应用,使用相同BundleID替换了旧应用,想延用旧的coredata数据,无法找到momd
  • 2017-06-05 服务端数据更新,如何更新客户端缓存
  • 2017-06-05 afnetworking从接口中得到数据,怎么把数据放在另外的变量里呢
  • 2017-06-05 Objective-C和Swift的主要区别是什么?
  • 2017-06-05 如何实现中国梦reactnative如何实现定时提醒
  • 2017-06-05 swiftxcode8下reactiveCocoa转换出错!
  • 2017-06-05 activity生命周期[iOS]监视某个VC生命周期函数
  • 2017-06-05 Xcode8中的一些问题
  • 2017-06-05 OC网络编程OC中遍历数组操作的结果为什么是一串地址?
  • 2017-06-05 iOS中下载的文件应该放在哪个文件夹中?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • iOS采用https请求,请问我需要修改一些代码吗?
    • iOS基础控件iOS中的NSURLSession从网络获取数据
    • iOS基础控件关于iOS设置代理问题
    • (swift)ReactiveCocoa50绑定问题
    • swift3实机测试SWTableviewCell无法载入
    • swift3使用try建立SQLite,抛出“Errorsthrownfromherearenothandle”
    • 安卓的问题难倒ios开发的
    • ios在view中add一个uitabbarcontroller其他的控件的点击事件冲突
    • iOS开发真机调试和安装咨询
    • 正比例反比例iOS单例创建的一点疑惑

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有