2014-09-24 24 views
0

我有視圖控制器1讓我們說VC1和我推我的另一個視圖控制器讓我們說VC2NSBlock的訪問限定符是複製還是弱或強?

  1. VC1我已經類型定義我的塊如下

    #define typedef void(^Myblock)();

  2. VC2我已經聲明瞭一個塊的屬性如下

    @property(nonatomic, weak) MyBlock myBlock;

  3. VC2之前我分配文字的塊作爲遵循

-(void)pushVC2 
    { 
     __weak VC1 *weakSelf = self; 
     VC2 *vc2 = [self.storyboard instantiateViewControllerWithIdentifier:@"VC2"]; 
     [vc2 setMyBlock:^{ 
      NSLog(@"Block executed"); 
     }]; 
    } 
  • 我的問題是,塊沒有,如果我執行VC2稱爲我的塊。 如果我宣佈屬性爲複製,則塊執行。任何人都有解釋。
  • 回答

    1

    希望這會清除你的概念: -

    注:應指定複製的財產屬性,因爲一個塊需要被複制跟蹤它捕獲狀態的原有範圍之外。這不是您在使用自動引用計數時需要擔心的事情,因爲它會自動發生,但最好的做法是使用property屬性來顯示結果行爲。有關更多信息,請參閱塊編程主題。

    來源: - https://developer.apple.com/library/ios/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html

    +0

    這是(「你應該指定複製的屬性屬性」)蘋果文件規定的?你能否發表蘋果的確切聲明? – jailani 2014-09-24 09:15:41

    +0

    謝謝,我從上面的線獲得了 – jailani 2014-09-24 09:17:06

    相關問題