Ich verwende Grand Central Dispatch-Methoden, um einige Ausführungen meiner App in einer Warteschlange auszuführen. Ich entscheide die Rahmen für Schaltflächen in einer Berechnung in dieser Warteschlange. Ich möchte, dass meine App ihren Scren neu zeichnet und nach der Rotation neue Frames berechnet. Hier einige Pseudo-Code Erklärung von dem, was ich tue:Wie man einen Block des Codes nennt und ihn in einer anderen Methode nennt?
CGFloat a=123, b=24;
dispatch_async(drawingQue, ^{
//needed loops to get the total button count-how many ones will be drawn et..
for(int x=0;x<someCount<x++){
for(int y=0;y<anotherCount;y++){
//needed frame&name ect assingments
button.frame= CGRectMake(x+y, x-y, a, b);
[button setTitle:@"abc"];}}
};
Hier ist, was ich will, ist, wie kann ich diesen Block einen Namen geben und wieder verwenden es in der
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
}
Delegatmethode? Zum Beispiel, wenn die Rotation ist Landschaft, ich möchte a=234
anstelle von 123 verwenden .. Jede Hilfe bitte. Vielen Dank im Voraus ..
Es ist wichtig zu beachten, dass die Bezugnahme auf "self" oder irgendeinen ivar innerhalb eines Blocks, der selbst in einem ivar gehalten wird, einen Retain-Zyklus und somit ein leak erzeugt. Sie können den Zyklus unterbrechen, indem Sie entweder durch einen '__block id blockSelf = self;' -Zeiger auf Ivars verweisen oder indem Sie den Block _before_ 'dealloc' freigeben. –