- (void)accessArrayObject:(NSArray*)object {
    NSString* value = @"tempt";
    value = [object objectAtIndex:10];
    [self displayAlertView:@"Keep Running"
                   message:[NSString stringWithFormat:@"Value:%@",value]];
}
- (void)accessDictionaryObject:(NSDictionary*)object {
    NSString* value = @"tempt";
    value = [object objectForKey:@"Key"];
    [self displayAlertView:@"Keep Running"
                   message:[NSString stringWithFormat:@"Value:%@",value]];
}
- (void)accessOtherObject:(PCObject*)object {
    //PCObject
    NSString* value1 = @"tempt";
    NSString* value2 = @"tempt";
    NSString* value3 = @"tempt";
    value1 = [object name];
    NSLog(@"1:%@",value1);
//        value1 = object->publicValue; // Crash app
//        NSLog(@"1:%@",value1);
    
    [object setName:@"LocalValue"];
    object.name = @"OtherValue";
    value2 = object.name;
    NSLog(@"2:%@",value2);
    
    PCObject* localObject = [[PCObject alloc] initWithPCObject:object];
    value3 = localObject.name;
    NSLog(@"3:%@",value3);
    
    [self displayAlertView:@"Keep Running"
                   message:[NSString stringWithFormat:@"Value1:%@ - Value2:%@ - Value3:%@",value1,value2,value3]];
}
- (IBAction)clickOnSession3Button:(id)sender {
    @try {
        switch (self.session3Segment.selectedSegmentIndex) {
            case 0: {
                //Case1: Array
                NSArray* nilArray = nil;
                [self accessArrayObject:nilArray];
                break;
            }
            case 1: {
                //Case2: Dictionary
                NSDictionary* nilDictionary = nil;
                [self accessDictionaryObject:nilDictionary];
                break;
            }
            case 2: {
                //Case3: Object
                PCObject* nilObject = nil;
                [self accessOtherObject:nilObject];
                break;
            }
            default:
                break;
        }
    }
    @catch (NSException *exception) {
        NSLog(@"%@",exception);
        [self displayAlertView:exception.name message:exception.reason];
    }
    @finally {
        
    }
}