Enumerate with blocks

大部份時間,你不會 assign block 給一個變數,而是傳一個參數式的 block 給接收者, pass block with message send as an argument .

enumerateObjectUsingBlock : message on NSArray

ex:

NSArray * Hats =@ [ @" Cowboy " , @" Baseball " ,@" Beanie " , @ " Fez " ] ;

//   快速列舉寫法

    for (NSString *hat in Hats ) {

    NSLog (@" Trying on hat %@ " , hat )

    };

//  用blocks列舉寫法 (傳blocks給接收者)

[ Hats enumerateObjectUsingBlock:

^(id word , NSUInteger index , BOOL *stop) {

NSLog (@" Trying on hat %@" , word ) ;

}

];

// 最後分別印出四個 , blocks參數解釋,NSSArray 裡的字串 word , Array裡有幾個 index , 可以停止這個語法 stop .

 

若是block 給變數 and pass it into the message 

void ( ^ enumerationBlock)(NSString * , NSUInteger , BOOL *)=

^(NSString *word , NSUInteger index , BOOL *stop ) {

NSLog (@"%@ is a funny " , word)

};

[funnywords enumerateObjectUsingBlocks: enumerationBlock ] ;

// funnywords is NSArray
Advertisements

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s