You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							97 lines
						
					
					
						
							3.1 KiB
						
					
					
				
			
		
		
	
	
							97 lines
						
					
					
						
							3.1 KiB
						
					
					
				| /*
 | |
|  * Copyright (c) 2015 - present Facebook, Inc.
 | |
|  * All rights reserved.
 | |
|  *
 | |
|  * This source code is licensed under the BSD style license found in the
 | |
|  * LICENSE file in the root directory of this source tree. An additional grant
 | |
|  * of patent rights can be found in the PATENTS file in the same directory.
 | |
|  */
 | |
| 
 | |
| //
 | |
| //  AppDelegate.m
 | |
| //  HelloWorldApp
 | |
| //
 | |
| 
 | |
| #import "AppDelegate.h"
 | |
| #import "Hello.h"
 | |
| #import <UIKit/UIKit.h>
 | |
| 
 | |
| @interface AppDelegate ()
 | |
| 
 | |
| @end
 | |
| 
 | |
| @implementation AppDelegate
 | |
| 
 | |
| - (void)memory_leak_bug {
 | |
|   CGPathRef shadowPath = CGPathCreateWithRect(self.inputView.bounds, NULL);
 | |
| }
 | |
| 
 | |
| - (void)resource_leak_bug {
 | |
|   FILE* fp;
 | |
|   fp = fopen("c:\\test.txt", "r");
 | |
| }
 | |
| 
 | |
| - (void)parameter_not_null_checked_block_bug:(void (^)())callback {
 | |
|   callback();
 | |
| }
 | |
| 
 | |
| - (NSArray*)npe_in_array_literal_bug {
 | |
|   NSString* str = nil;
 | |
|   return @[ @"horse", str, @"dolphin" ];
 | |
| }
 | |
| 
 | |
| - (NSArray*)premature_nil_termination_argument_bug {
 | |
|   NSString* str = nil;
 | |
|   return [NSArray arrayWithObjects:@"horse", str, @"dolphin", nil];
 | |
| }
 | |
| 
 | |
| - (BOOL)application:(UIApplication*)application
 | |
|     didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
 | |
|   // Override point for customization after application launch.
 | |
|   Hello* hello = [Hello new];
 | |
|   [hello null_dereference_bug];
 | |
|   [self memory_leak_bug];
 | |
|   [self resource_leak_bug];
 | |
|   [hello parameter_not_null_checked_bug:nil];
 | |
|   [self parameter_not_null_checked_block_bug:nil];
 | |
|   [hello ivar_not_nullable_bug:nil];
 | |
|   [self npe_in_array_literal_bug];
 | |
|   [self premature_nil_termination_argument_bug];
 | |
|   return YES;
 | |
| }
 | |
| 
 | |
| - (void)applicationWillResignActive:(UIApplication*)application {
 | |
|   // Sent when the application is about to move from active to inactive state.
 | |
|   // This can occur for certain types of temporary interruptions (such as an
 | |
|   // incoming phone call or SMS message) or when the user quits the application
 | |
|   // and it begins the transition to the background state.
 | |
|   // Use this method to pause ongoing tasks, disable timers, and throttle down
 | |
|   // OpenGL ES frame rates. Games should use this method to pause the game.
 | |
| }
 | |
| 
 | |
| - (void)applicationDidEnterBackground:(UIApplication*)application {
 | |
|   // Use this method to release shared resources, save user data, invalidate
 | |
|   // timers, and store enough application state information to restore your
 | |
|   // application to its current state in case it is terminated later.
 | |
|   // If your application supports background execution, this method is called
 | |
|   // instead of applicationWillTerminate: when the user quits.
 | |
| }
 | |
| 
 | |
| - (void)applicationWillEnterForeground:(UIApplication*)application {
 | |
|   // Called as part of the transition from the background to the inactive state;
 | |
|   // here you can undo many of the changes made on entering the background.
 | |
| }
 | |
| 
 | |
| - (void)applicationDidBecomeActive:(UIApplication*)application {
 | |
|   // Restart any tasks that were paused (or not yet started) while the
 | |
|   // application was inactive. If the application was previously in the
 | |
|   // background, optionally refresh the user interface.
 | |
| }
 | |
| 
 | |
| - (void)applicationWillTerminate:(UIApplication*)application {
 | |
|   // Called when the application is about to terminate. Save data if
 | |
|   // appropriate. See also applicationDidEnterBackground:.
 | |
| }
 | |
| 
 | |
| @end
 |