1

RubyMation を使用して TableView を作成すると、次のコードが得られます。dataSource は別のクラスです。次のコードは正常に実行されます。

ただし、最初に @dataSource のインスタンス変数を使用していません。ローカル変数のみです。無事にアプリが起動しました。しかし、スクロールを開始すると、アプリがクラッシュしました。

では、なぜインスタンス変数を使用する必要があるのでしょうか?

ティア、JW

class FolderController < UIViewController

  def viewDidLoad
    super

    self.title = "Folder"

    @table = UITableView.alloc.initWithFrame(self.view.bounds)
    self.view.addSubview @table

    # fine
    @dataSource = DatasourceFolder.new
    @table.dataSource = @dataSource

    # crashes when scrolling the tableview 
    # dataSource = DatasourceFolder.new
    # @table.dataSource = dataSource

 end

終わり

4

1 に答える 1

1

この動作の理由は、ガベージコレクションにあると思いました。だから私はググって、私の推測を裏付けるRubyMotionでオブジェクトの初期化を見つけました。私には理にかなっているように思えます...

于 2013-04-28T21:41:31.677 に答える