2016-05-10 5 views
0

これは私の最初のアプリです。私はチャートフレームワークを使用して、タブ付きアプリケーションに2つの異なるチャートを表示しています。私は私のアプリケーションを実行すると最初のビューとグラフが円滑に実行されますが、ビューをロードしようとすると、私はexc_bad_accessエラーが表示されます。私はこのエラーは一般的にメモリの問題に関係していることを知っています。だから私はゾンビを有効にして、分析ツールを実行し、まだ何も思い付きませんでした。私はsetChartでエラーが発生し、setChart関数が実行された直後にエラーが発生します。どんな助けでも大歓迎です。ここチャートフレームワークを使用して2番目のチャートをロードするときにexc_bad_accessを取得しています

はコードです:

@IBOutlet weak var yourRankRetailLabel: UILabel! 

@IBOutlet weak var barChartView2: BarChartView! 


var employee: [String]! 
var currentRank = "" 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

     DataService.dataService.CURRENT_USER_REF.observeEventType(FEventType.Value, withBlock: { snapshot in //snap 

     let rank = snapshot.value.objectForKey("rankretail") as! String 

     self.yourRankRetailLabel.text = "You were ranked \(rank) in service sales last week!" 
     self.currentRank = rank 
     }, withCancelBlock: { error in 
      print(error.description) 
    })//snap 


    employee = ["1491", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] 
    let unitsSold = [5.0, 4.0, 6.0, 3.0, 12.0, 16.0, 4.0, 18.0, 2.0, 4.0, 5.0, 4.0] 

    setChart(employee, values: unitsSold) 




} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 



    } 

func setChart(dataPoints: [String], values: [Double]) { 
    barChartView2.noDataText = "You need to provide data for the chart." 

    var dataEntries: [BarChartDataEntry] = [] 
    for i in 0..<dataPoints.count { 
     let dataEntry = BarChartDataEntry(value: values[i], xIndex: i) 
     dataEntries.append(dataEntry) 
    } 

    let chartDataSet = BarChartDataSet(yVals: dataEntries, label: "Units Sold") 
    let chartData = BarChartData(xVals: employee, dataSet: chartDataSet) 
    barChartView2.data = chartData 

答えて

0

私はこのラベル推測したい:

@IBOutlet weak var yourRankRetailLabel: UILabel! 

が破壊されてしまいました。これは、weakの参照です。つまり、他のラベルがそのラベルを参照していない場合、たとえば、親ウィジェットでは、ラベルのメモリが解放されるため、変数はメモリ内の有効な場所を参照しません。

+0

私はすべての私の参照をチェックし、すべてがまだ接続されています。また、barChartView2がStrong変数であることを伝えたコードでは、私はそれを欲求不満から外しましたが、それ以来、それを弱い変数に戻しました – Taylor

関連する問題