2012-11-26 57 views
1

我一直對此感興趣,但似乎找不到我想要的東西。基本上我有在A級iOS - 獲取作爲參數傳遞的塊內的變量

- (void)doSomethingCoolWithThisBlock:(void (^)(void))block 

在B類,下面的方法聲明時,我把這種方法有點像塊中的部分如下:

UILabel *myLabel = [[UILabel alloc] init]; 
UITextField *myField = [[UITextField alloc] init]; 

我問題是,在執行我的doSomethingCoolWithThisBlock時,我該如何剖析塊中的內容並獲取例如UILabel的內容?

回答

3

簡短的答案是,你不能;如果要將UILabel傳遞給該方法,它應該採用類型爲UILabel *(以及任何其他您希望作爲單獨參數傳遞的參數,或者某種容器類型的參數 - 可能是您自己的自定義協議的參數)所有的事情)。

但是,如果你只是想通過一兩件事從塊內當然也可以使塊返回東西(例如,該類型更改爲(UILabel *)(^)(void),然後在塊的結尾做return myLabel;)。更復雜的方法是將塊作爲參數指向指針的指針(例如,UILabel **),然後從塊內指定給這些指針,但看起來這不會有多大意義。

+0

太棒了!非常感謝! –