squeek school

Разработка приложений для iOS
Асинхронная
         обработка
•   + (void)detachNewThreadSelector:
    (SEL)aSelector toTarget:(id)aTarget
    withObject:(id)anArgument

•   - (id)initWithTarget:(id)target
    selector:(SEL)selector object:
    (id)argument
Посылка сообщений

•   performSelectorOnMainThread:withObject
    :waitUntilDone:

•   performSelector:onThread:withObject:wait
    UntilDone:
Управление потоком
•   isExecuting - выполняется ли поток

•   isFinished - закончил ли выполнение

•   isCanceled - отменил ли меня кто-нибудь

•   можно [thread cancel], тогда он узнает, что его
    отменили, и выйдет

•   каждый Thread можно запускать только один
    раз

•   isFinished поток нельзя запусть еще раз

•   [NSThread exit] - закрывает текущий поток
А поспать?

• [NSThread sleepUntilDate:(NSDate *)]
• [NSThread sleepForTimeInterval:(float)] в
  секундах
• сон действует на текущий поток
iPad
UIPopoverController
UIPopoverController
- (IBAction)toolbarItemTapped:(id)sender
{
   MyCustomViewController* content = [[MyCustomViewController alloc]
init];
   UIPopoverController* aPopover = [[UIPopoverController alloc]
        initWithContentViewController:content];
   aPopover.delegate = self;
   [content release];


   self.popoverController = aPopover;
   [aPopover release];

   [self.popoverController presentPopoverFromBarButtonItem:sender
        permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
UISplitViewController
UISplitViewController
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions
{
   MyFirstViewController* firstVC = [[[MyFirstViewController alloc]
                     init] autorelease];
   MySecondViewController* secondVC = [[[MySecondViewController alloc]
                     init] autorelease];

    UISplitViewController* splitVC = [[UISplitViewController alloc] init];
    splitVC.viewControllers = [NSArray arrayWithObjects:firstVC, secondVC, nil];

    [window addSubview:splitVC.view];
    [window makeKeyAndVisible];

    return YES;
}



UISplitViewControllerDelegate

– splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
– splitViewController:willShowViewController:invalidatingBarButtonItem:
– splitViewController:popoverController:willPresentViewController:
ios 5
• Новые уведомления
• iCloud - хранилище для ваших
  приложений
• iMessages - нам не дали API :( - дали
  отображение сообщний Messages-like
• Олег покажет вживую :)
Gesture Recognizing

• Swipe
• Pan
• Tap
• PinchGestureRecognizer
• LongPress
• RotationGestureRecognizer

Squeek School #7

  • 1.
  • 2.
    Асинхронная обработка • + (void)detachNewThreadSelector: (SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument • - (id)initWithTarget:(id)target selector:(SEL)selector object: (id)argument
  • 3.
    Посылка сообщений • performSelectorOnMainThread:withObject :waitUntilDone: • performSelector:onThread:withObject:wait UntilDone:
  • 4.
    Управление потоком • isExecuting - выполняется ли поток • isFinished - закончил ли выполнение • isCanceled - отменил ли меня кто-нибудь • можно [thread cancel], тогда он узнает, что его отменили, и выйдет • каждый Thread можно запускать только один раз • isFinished поток нельзя запусть еще раз • [NSThread exit] - закрывает текущий поток
  • 5.
    А поспать? • [NSThreadsleepUntilDate:(NSDate *)] • [NSThread sleepForTimeInterval:(float)] в секундах • сон действует на текущий поток
  • 6.
  • 7.
  • 8.
    UIPopoverController - (IBAction)toolbarItemTapped:(id)sender { MyCustomViewController* content = [[MyCustomViewController alloc] init]; UIPopoverController* aPopover = [[UIPopoverController alloc] initWithContentViewController:content]; aPopover.delegate = self; [content release]; self.popoverController = aPopover; [aPopover release]; [self.popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; }
  • 9.
  • 10.
    UISplitViewController - (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions { MyFirstViewController* firstVC = [[[MyFirstViewController alloc] init] autorelease]; MySecondViewController* secondVC = [[[MySecondViewController alloc] init] autorelease]; UISplitViewController* splitVC = [[UISplitViewController alloc] init]; splitVC.viewControllers = [NSArray arrayWithObjects:firstVC, secondVC, nil]; [window addSubview:splitVC.view]; [window makeKeyAndVisible]; return YES; } UISplitViewControllerDelegate – splitViewController:willHideViewController:withBarButtonItem:forPopoverController: – splitViewController:willShowViewController:invalidatingBarButtonItem: – splitViewController:popoverController:willPresentViewController:
  • 11.
    ios 5 • Новыеуведомления • iCloud - хранилище для ваших приложений • iMessages - нам не дали API :( - дали отображение сообщний Messages-like • Олег покажет вживую :)
  • 12.
    Gesture Recognizing • Swipe •Pan • Tap • PinchGestureRecognizer • LongPress • RotationGestureRecognizer

Editor's Notes