Skip To Content

Release notes for 10.1.1

In this topic

This topic outlines the new features, updates, and changes to the ArcGIS Runtime SDK for iOS at version 10.1.1.

10.1.1 Update 2

This update allows your apps to use tile packages (.tpk files) that are greater than 2 GB in size. It also removes a potential conflict between the ArcGIS library and 3'rd party SQLlite libraries you may wish to use in your projects.

10.1.1 Update 1

This update adds translations for six new languages: Danish, Estonian, Hebrew, Latvian, Lithuanian, and Portuguese (Portugal). It also improves performance of your apps by reducing memory and CPU utilization by the display subsystem.

10.1.1

This release synchronizes the version numbers for ArcGIS Runtime SDKs for iOS, Android, Java SE, and WPF. This synchronization reflects a commonality across the Runtime SDKs in terms of their capabilities and a unified path of evolution going forward. Also, the Runtime SDKs now begin to share a common C++ runtime. The benefit of adopting this runtime is that, as it evolves, all SDKs will automatically inherit new functionality and capabilities that wouldn't have been possible earlier without a native implementation. New capabilities will adopt similar patterns and practices across all SDKs allowing you to transfer knowledge and expertise from one platform to another; however, each SDK will remain true to its underlying platform, programming language, tools, and workflows.

New features

Note:

With this release, iOS 4 is no longer supported. Your apps will need a minimum of iOS 5 running on the device.

Support for military symbology

Military software used for situation awareness and command and control pass secure communications between mobile devices in the field and command centers. Data communications can contain military messages that define where specific military symbols are located on a map. The API allows you to process these military messages and convert them to military symbols to be displayed on a map. Currently, the messages are displayed using MIL-STD-2525C representation, and future releases will support additional standards.

Learn more about support for military symbology

Support for ArcGIS Online enhancements

Support for ArcGIS Online enhancements include honoring filtered views and visibility scale range on layers, honoring editing overrides on feature layers, transparently performing authentication for secure services that have been registered with ArcGIS Online, and much more.

Support for the World Geocoding Service

The class AGSLocatoris capable of finding locations using the new World Geocoding Service on ArcGIS Online. The service covers more than 100 countries and is capable of finding locations based on street addresses, points of interest, postal codes, x/y coordinates, place names, and more.

Query improvements

You can perform additional processing on query results from ArcGIS for Server 10.1 or later. For example, you can sort results based on a field or group of fields. You can also group results and compute statistics such as average, standard deviation, count, and so on, for each group.

Learn more about grouping and ordering results

Access secured services using client certificates

Client certificate is the most secure authentication method to gain access to secured resources on a server. It uses the organizational Public Key Infrastructure (PKI) environment to provide digital certificates for both client and server. The API can use digital certificates on the mobile device to authenticate the client with the server and establish a secure line of communication to access protected resources on the server.

Learn more about accessing secure services using client certificates

Simulate location updates on the map

The API includes a number of location data sources that provide location updates to the map. You can use one of the provided data sources to simulate location updates using a GPX file or a polyline geometry. This is useful for testing and demo purposes.

Learn more about location data sources

Highlight symbols

You can highlight any symbol by adding a subtle halo around its edges. This is especially useful for picture marker symbols, because you no longer have to replace the entire picture or symbol to visually communicate that a feature was selected or highlighted. See the setSelected:forGraphic: method on AGSGraphicsLayer.

Migrating existing applications

Migrating your existing applications to this release will require more effort than it has for earlier releases. There have been a number of changes to the API. These changes are described in detail below. In the past, the API was backwards-compatible for ease of migrating existing applications to new releases of the SDK. At this release, some breaking changes just couldn't be avoided as part of moving to the new architecture.

Xcode project changes

The following Xcode project changes are necessary at this release.

Update the Frameworks Search Path setting

A new subfolder called iOS has been added to the installation directory. You need to modify your project's Frameworks Search Path to point to $(HOME)/Library/SDKs/ArcGIS/iOS/**.

Remove the armv7s architecture

Remove the armv7s entry (if it exists) from the Valid Architectures setting of your Xcode project. This entry is automatically added by Xcode to optimize the application binary for the iPhone 5 A6 processor, but the ArcGIS library currently does not include an armv7s slice.

Modify dependent libraries

  • Remove libstdc++.dylib.
  • Add libc++.dylib and OpenGLES.framework.

Update the resource bundle

Some of the images in the resource bundle have been renamed. You need to remove the existing reference to ArcGIS.bundle, and re-add the bundle to your project.

API changes

A number of classes, methods, and properties have either been removed or replaced as part of retrofitting the API with the C++ runtime. The best way to migrate your apps is to build them with the new SDK and go through the build errors in your project looking for classes, methods, and properties that are flagged as unavailable. You can then perform a search on this document with the specific name of the class, method, or property to find out exactly what has changed and how to resolve the build error.

Note:

API changes for notifications and delegate classes are not flagged as build errors. Your application may compile successfully even if you don't take into account such changes; however, it may not work as expected. You have to manually check whether your application is relying on these notifications and delegates and establish if the changes are relevant to you. For your convenience, the changes to notifications and delegate classes are listed first.

Notifications

  • AGSMapView
    • Notifications MapDidEndZooming and MapDidEndPanning renamed AGSMapViewDidEndZoomingNotification and AGSMapViewDidEndPanningNotification, respectively.
      //Earlier
      //1. Zooming
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
        name:@"MapDidEndZooming" object: nil];
      //1. Panning
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
        name:@"MapDidEndPanning" object: nil];
      
      //Now
      //1. Zooming
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
        name:AGSMapViewDidEndZoomingNotification object: nil];
      //1. Panning
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
        name:AGSMapViewDidEndPanningNotification object: nil];
  • AGSSketchGraphicsLayer
    • Notification GeometryChanged renamed AGSSketchGraphicsLayerGeometryDidChangeNotification.
      //Earlier
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
        name:@"GeometryChanged" object: nil];
      
      //Now
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
        name:AGSSketchGraphicsLayerGeometryDidChangeNotification object: nil];
  • AGSLayer
    • Notifications LayerDidLoad and LayerFailedToLoad renamed AGSLayerDidLoadNotification and AGSLayerDidFailToLoadNotification, respectively.
      //Earlier
      //1. LayerDidLoad
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
        name:@"LayerDidLoad" object: nil];
      //2. LayerFailedToLoad
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
        name:@"LayerFailedToLoad" object: nil];
      
      //Now
      //1. LayerDidLoad
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
        name:AGSLayerDidLoadNotification object: nil];
      //2. LayerFailedToLoad
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
        name:AGSLayerDidFailToLoadNotification object: nil];

<AGSMapViewLayerDelegate>

  • Removed methods mapView:didLoadLayerForLayerView: and mapView:failedLoadingLayerForLayerView:baseLayer:withError:. Previously, these methods were used to inform AGSMapView's layerDelegate that layers loaded successfully or encountered an error. Now, this information is given to each layer's delegate instead. You need to adopt the AGSLayerDelegate protocol, and set your class as the layer's delegate.
    //Earlier
    //1. Adopt AGSMapViewLayerDelegate protocol
    @interface MyViewController : UIViewController <AGSMapViewLayerDelegate>
    
    //2. Set your class as AGSMapView's layerDelegate
    mapView.layerDelegate = self;
    
    //3. Implement method for success
    - (void) mapView:(AGSMapView *)mapView didLoadLayerForLayerView:(UIView< AGSLayerView > *)layerView	 
    
    //4. Implement method for error
    - (void) mapView:(AGSMapView *)mapView failedLoadingLayerForLayerView:(UIView< AGSLayerView > *)layerView baseLayer:(BOOL)baseLayer withError:(NSError *)error	 
    
    
    //Now
    //1. Adopt AGSLayerDelegate protocol
    @interface MyViewController : UIViewController <AGSLayerDelegate>
    
    //2. Set your class as AGSLayer's delegate
    layer.delegate = self;
    
    //3. Implement method for success
    - (void) layerDidLoad:(AGSLayer*) layer
    
    //4. Implement method for error
    - (void) layer:(AGSLayer*) layer didFailToLoadWithError:(NSError*)error
  • Removed method mapView:failedLoadingWithError:. No replacement.

<AGSMapViewCalloutDelegate>

  • Removed methods mapView:didClickCalloutAccessoryButtonAtPoint:, mapView:didClickCalloutAccessoryButtonForGPS:, and mapView:didClickCalloutAccessoryButtonForGraphic:. Previously, these methods were used to inform AGSMapView's calloutDelegate that the user tapped the accessory button in the callout. As a replacement, a new method, didClickAccessoryButtonForCallout:, has been introduced on AGSCalloutDelegate. You need to adopt the AGSCalloutDelegate protocol, and set your class as the callout's delegate.
    //Earlier
    //1. Adopt AGSMapViewCalloutDelegate protocol
    @interface MyViewController : UIViewController <AGSMapViewCalloutDelegate>
    
    //2. Set your class as AGSMapView's calloutDelegate
    mapView.calloutDelegate = self;
    
    //3. Implement methods for point, gps, and graphic
    - (void) mapView:(AGSMapView *)mapView didClickCalloutAccessoryButtonAtPoint:(AGSPoint *)point
    - (void) mapView:(AGSMapView *)mapView didClickCalloutAccessoryButtonForGPS:(AGSGPS *)gps
    - (void) mapView:(AGSMapView *)mapView didClickCalloutAccessoryButtonForGraphic:(AGSGraphic *)graphic	 
    
    //Now
    //1. Adopt AGSCalloutDelegate protocol
    @interface MyViewController : UIViewController <AGSCalloutDelegate>
    
    //2. Set your class as callout's delegate
    mapView.callout.delegate = self;
    
    //3. Implement method for all
    - (void) didClickAccessoryButtonForCallout:(AGSCallout *)callout	{
      if([callout.representedObject isKindOfClass: [AGSPoint class]]){
       AGSPoint* point = (AGSPoint*) callout.representedObject;  
       ... 
      }else if([callout.representedObject isKindOfClass: [AGSLocationDisplay class]]){
       AGSLocationDisplay* ld = (AGSLocationDisplay*) callout.representedObject;  
       ...
      }else if([callout.representedObject isKindOfClass: [AGSGraphic class]]){ 
       AGSGraphic* graphic = (AGSGraphic*) callout.representedObject;  
       ...
      }
    
    }
  • Methods mapView:shouldShowCalloutForGPS: and mapView:didShowCalloutForGPS: renamed mapView:shouldShowCalloutForLocationDisplay: and mapView:didShowCalloutForLocationDisplay:, respectively.
    //Earlier
    //1.
    - (BOOL) mapView:(AGSMapView *)mapView shouldShowCalloutForGPS:(AGSGPS *)gps
    //2.
    - (void) mapView:(AGSMapView *)mapView didShowCalloutForGPS:(AGSGPS *)gps
    
    //Now
    //1.
    - (BOOL) mapView:(AGSMapView *)mapView shouldShowCalloutForLocationDisplay:(AGSLocationDisplay *)ld
    //2.
    - (void) mapView:(AGSMapView *)mapView didShowCalloutForLocationDisplay:(AGSLocationDisplay *)ld

AGSGPSInfoTemplateDelegate

  • Class AGSGPSInfoTemplateDelegate renamed AGSLocationDisplayInfoTemplateDelegate.
    //Earlier
    @interface MyViewController : UIViewController <AGSGPSInfoTemplateDelegate>
    
    //Now
    @interface MyViewController : UIViewController <AGSLocationDisplayInfoTemplateDelegate>
  • Modified method signatures and names of all methods to use AGSLocationDisplay instead of AGSGPS.

<AGSWebMapDelegate>

  • Methods that did not provide a reference to the web map have been deprecated and replaced with new methods that include a parameter for the web map. These changes are detailed as follows:
    • Method didFailToLoadLayer:url:withError: has been deprecated and replaced with webMap:didFailToLoadLayer:url:baseLayer:federated:withError:.
      //Earlier
      - (void) didFailToLoadLayer:(NSString *)layerTitle url:(NSURL *)url baseLayer:(BOOL)baseLayer withError:(NSError *)error 
      
      //Now
      - (void) webMap:(AGSWebMap *)webMap didFailToLoadLayer:(AGSWebMapLayerInfo *)layerInfo baseLayer:(BOOL)baseLayer federated:(BOOL)federated withError:(NSError *)error
    • Method didLoadLayer: has been deprecated and replaced with webMap:didLoadLayer:.
      //Earlier
      - (void) didLoadLayer:(AGSLayer *)layer
      
      //Now
      - (void) webMap:(AGSWebMap *)webMap didLoadLayer:(AGSLayer *)layer
    • Method bingAppId has been deprecated and replaced with bingAppIdForWebMap:.
      //Earlier
      - (NSString*) bingAppId
      
      //Now
      - (NSString*) bingAppIdForWebMap:(AGSWebMap *)webMap
    • Method webMap:willSkipHostedLayer: has been removed. As a replacement, the federated argument in the method webMap:didFailToLoadLayer:url:baseLayer:federated:withError: is set to Yes when a hosted layer fails to load.

<AGSLayerView>

  • This class has been removed because the layer display is no longer managed by iOS views. Instead, the C++ runtime manages the display using OpenGLES.
  • Use the property opacity on AGSLayer to change transparency of a layer instead of alpha on <AGSLayerView>.
  • Use the property visible on AGSLayer to hide and unhide a layer instead of hidden on <AGSLayerView>.
  • There is no need to specify a value for the properties drawDuringPanning and drawDuringZooming. The display is optimized automatically for each layer.

AGSGraphic

  • In the past, when you assigned a geometry to a graphic, a reference to the geometry was stored. This meant that any changes you made to the geometry were picked up by the graphic automatically. Now, however, a copy of the geometry is stored whenever you assign it to a graphic. This means that any modifications you make to the geometry after assigning it to a graphic do not have any impact on the graphic. To update the graphic, reassign the geometry to the graphic after you've modified the geometry.
  • Removed property attributes. This is because the attributes are no longer stored as a dictionary in the Objective-C tier, but rather further down by core runtime in the C++ tier. You can use individual getter methods such as attributeAsStringForKey:, attributeAsDoubleForKey:exists:, and attributeAsDateForKey: to get the value of a particular attribute based on the data type you expect. You can use corresponding setter methods such as setAttributeWithString:forKey:, setAttributeWithDoubleForKey:, and so on, to set a new value for attributes. If you don't know the type of attribute, you can use attributeForKey: and setAttribute:forKey: instead, which work with NSNumber, NSString, NSDate, and NSNull types. Alternatively, you can use the method allAttributes to get a dictionary containing all the attributes. This dictionary represents a copy of the graphic's attributes, and modifying it won't affect the graphic. If you modify the dictionary, you then need to call setAllAttributes: by passing in the modified dictionary to update the graphic's attributes.

AGSGraphicsLayer

Method dataChanged has been removed. The map display will update automatically if you add or remove a graphic, or change a graphic by modifying its attributes, assigning it a new symbol or a new geometry. However, there may be cases when you modify objects associated with the graphic, but not the graphic itself. For example, changing properties on a graphic's symbol, or changing the shape of a graphic's geometry. In such cases, the map display will not update automatically. To ensure that the graphic is redrawn, assign the modified symbol or geometry back to the graphic.

AGSMapView

  • Property gps renamed locationDisplay and changed type from AGSGPS to AGSLocationDisplay.
    //Earlier
    AGSGPS* gps = mapView.gps;
    
    //Now
    AGSLocationDisplay* ld = mapView.locationDisplay;
  • Removed methods showCalloutAtPoint: and showCalloutAtPoint:forGraphic:animated: and added similar methods to AGSCallout instead.
    //Earlier
    //1. Show callout at point
    [mapView showCalloutAtPoint:point];
    //2. Show callout for graphic
    [mapView showCalloutAtPoint:point forGraphic:graphic animated:YES];
    
    //Now
    //1. Show callout at point
    [mapView.callout showCalloutAt:point pixelOffset:CGPointZero animated:YES];
    //2. Show callout for graphic
    [mapView.callout showCalloutAtPoint:point forGraphic:graphic animated:YES];
  • Removed property mapLayerViews. Use the method mapLayerForName to find a layer using a name.
    //Earlier
    UIView<AGSLayerView>* lyrView = [mapView.mapLayerViews valueForKey:@"<layer_name>"];
    AGSLayer* layer = lyrView.agsLayer;
    
    //Now
    AGSLayer* layer = [mapView mapLayerForName:@"<layer_name>"];
  • Removed property wrapAround. Use methods enableWrapAround and disableWrapAround to toggle wrap-around mode.
    //Earlier
    //1. Enable wrap around
    mapView.wrapAround = YES;
    //2. Disable wrap around
    mapView.wrapAround = NO;
    
    //Now
    //1. Enable wrap around
    [mapView enableWrapAround];
    //2. Disable wrap around
    [mapView disableWrapAround];
  • Removed property fullEnvelope. Use maxEnvelope instead.
    //Earlier
    AGSEnvelope* env = mapView.fullEnvelope;
    
    //Now
    AGSEnvelope* env = mapView.maxEnvelope;
  • Removed properties zooming andpanning. Use the property interacting to detect if the user is interacting (dragging, pinching, and so on) with the map. Alternatively, you can listen for notifications described next if you're interested in detecting panning and zooming operations.
  • Notifications MapDidEndZooming and MapDidEndPanning renamed AGSMapViewDidEndZoomingNotification and AGSMapViewDidEndPanningNotification, respectively.
    //Earlier
    //1. Zooming
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
      name:@"MapDidEndZooming" object: nil];
    //1. Panning
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
      name:@"MapDidEndPanning" object: nil];
    
    //Now
    //1. Zooming
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
      name:AGSMapViewDidEndZoomingNotification object: nil];
    //1. Panning
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
      name:AGSMapViewDidEndPanningNotification object: nil];
  • Removed notifications MapIsZooming and MapIsPanning. No replacement. You can use the map's interacting property to detect if the user is interacting (dragging, pinching, and so on) with the map.
  • Removed notification MapTimeExtentChanged. No replacement. You can attach a Key-Value Observer to the map's timeExtent property to be notified when the time extent changes.

AGSGPS

  • Class AGSGPS renamed AGSLocationDisplay to better reflect that this class is only responsible for displaying a location on the map, and not retrieving location information. Also, the location information can be supplied from a variety of sources apart from the GPS sensor.
  • Enums of AGSGPSAutoPanMode renamed AGSLocationDisplayAutoPanMode.
    //Earlier
    mapView.gps.autoPanMode = AGSGPSAutoPanModeDefault;
    
    //Now
    mapView.locationDisplay.autoPanMode = AGSLocationDisplayAutoPanModeDefault;
  • Methods start and stop renamed startDataSource and stopDataSource, respectively, to indicate that a data source is responsible for supplying location information to this object.
    //Earlier
    //1. Start
    [mapView.gps start];
    //2. Stop
    [mapView.gps stop];
    
    //Now
    //1. Start
    [mapView.locationDisplay startDataSource];
    //2. Stop
    [mapView.locationDisplay stopDataSource];
  • Replaced property enabled with dataSourceStarted.
    //Earlier
    BOOL b = mapView.gps.enabled;
    
    //Now
    BOOL b = mapView.locationDisplay.dataSourceStarted;
  • Removed property currentPoint. Replaced with method mapLocation.
    //Earlier
    AGSPoint* p = mapView.gps.currentPoint;
    
    //Now
    AGSPoint* p = [mapView.locationDisplay mapLocation];
  • Removed method currentLocation. Replaced with property location of type AGSLocation.
    //Earlier
    CLLocation* cLoc = [mapView.gps currentLocation];
    
    //Now
    AGSLocation* agsLoc = mapView.locationDisplay.location;
  • Renamed images in ArcGIS.bundle used for displaying location information. GpsDisplay is now LocationDisplay, GpsDisplayHeading is now LocationDisplayCourse, and GpsDisplayCompass is now LocationDisplayHeading. The new names are more consistent with Apple's naming convention for location components (course, heading, and so on).

AGSMarkerSymbol

  • Property angle now rotates the symbol in a clockwise direction. In the past, the direction was counter-clockwise. You need to flip the sign to maintain the current rotation.
    //Earlier
    symbol.angle = 45;
    
    //Now
    symbol.angle = -45;
  • Properties xoffset and yoffset combined into a single property offset of type CGPoint.
    //Earlier
    symbol.xoffset = 5;
    symbol.yoffset = -3;
    
    //Now
    symbol.offset = CGPointMake(5,-3);
  • Property size changed from type CGFloat to CGSize.
    //Earlier
    symbol.size = 9;
    
    //Now
    symbol.size = CGSizeMake(9,9);
  • Property hotspot renamed leaderPoint.

AGSCompositeSymbol

The property symbols has been changed from type NSMutableArray to NSArray. You can no longer add or remove individual symbols by directly modifying the array. You must use the methods addSymbol: or removeSymbol: to add or remove individual symbols.

//Earlier
//1. Add a single symbol
[compositeSymbol.symbols addObject:symbol];
//2. Add many symbols
[compositeSymbol.symbols addObjectsFromArray:array];
//3. Remove a single symbol
[compositeSymbol.symbols removeObject:symbol];
//4. Remove all symbols
[compositeSymbol.symbols removeAllObjects];

//Now
//1. Add a single symbol
[compositeSymbol addSymbol:symbol];
//2. Add many symbols
[compositeSymbol addSymbols:array];
//3. Remove a single symbol
[compositeSymbol removeSymbol:symbol];
//4. Remove all symbols
[compositeSymbol removeAllSymbols];

AGSSimpleLineSymbol

The properties lineCap and lineJoin have been removed. No replacement.

AGSUniqueValueRenderer

  • The properties field1, field2, and field3 combined into a single array fields.
    //Earlier
    uvr.field1=@"<f1>";
    uvr.field2=@"<f2>";
    uvr.field3=@"<f3>";
    
    //Now
    uvr.fields = @[@"f1",@"f2",@"f3"];
  • The property uniqueValues has been changed from type NSMutableArray to NSArray. You can no longer modify the unique values of the renderer directly by modifying the array. You need to assign a new array to the renderer instead.
    //Earlier
    [uvr.uniqueValues addObject:uqValue1];
    [uvr.uniqueValues addObject:uqValue2];
    
    //Now
    NSArray* uqValues = @[uqValue1, uqValue2];
    uvr.uniqueValues = uqValues;

AGSTextSymbol

  • Property textTemplate renamed text. The new property does not replace ${} tokens with attribute values of the graphic. Re-introducing this functionality in a future release will be considered.
    //Earlier
    textSymbol.textTemplate = @"<>";
    
    //Now
    textSymbol.text = @"<>";
  • Removed properties shadowColor, shadowOffset and shadowBlur . No replacement.
  • Removed properties fontStyle, fontWeight, and fontDecoration and associated enum types. Use the properties bold, italic, underline, and strikeThru instead.
    //Earlier
    //1. Bold
    textSymbol.fontWeight = AGSTextSymbolFontWeightBold ;
    //2. Italic
    textSymbol.fontStyle = AGSTextSymbolFontStyleItalic ;
    //3. Underline
    textSymbol.fontDecoration = AGSTextSymbolFontDecorationUnderline ;
    //4. Strikethrough
    textSymbol.fontDecoration = AGSTextSymbolFontDecorationLineThrough ;
    
    //Now
    //1. Bold
    textSymbol.bold = YES;
    //2. Italic
    textSymbol.italic = YES;
    //3. Underline
    textSymbol.underline = YES;
    //4. Strikethrough
    textSymbol.strikeThru = YES;
  • Removed enum AGSTextSymbolHAlignmentJustify. Default value of property hAlignment changed to center.
  • Removed enum AGSTextSymbolVAlignmentBaseline. Default value of property vAlignment changed to top.

AGSSketchGraphicsLayer

Notification GeometryChanged renamed AGSSketchGraphicsLayerGeometryDidChangeNotification.

//Earlier
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
  name:@"GeometryChanged" object: nil];

//Now
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
  name:AGSSketchGraphicsLayerGeometryDidChangeNotification object: nil];

AGSLayer

Notifications LayerDidLoad and LayerFailedToLoad renamed AGSLayerDidLoadNotification and AGSLayerDidFailToLoadNotification, respectively.

//Earlier
//1. LayerDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
  name:@"LayerDidLoad" object: nil];
//2. LayerFailedToLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
  name:@"LayerFailedToLoad" object: nil];

//Now
//1. LayerDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
  name:AGSLayerDidLoadNotification object: nil];
//2. LayerFailedToLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respond:) 
  name:AGSLayerDidFailToLoadNotification object: nil];

AGSPictureFillSymbol

  • Properties xscale and yscale have been combined into a single property scale of type CGSize.
    //Earlier
    picSymbol.xscale = 3;
    picSymbol.yscale = 0.5;
    
    //Now
    picSymbol.scale = CGSizeMake(3,0.5);
  • Properties xoffset and yoffset have been combined into a single property offset of type CGPoint.
    //Earlier
    picSymbol.xoffset = 10;
    picSymbol.yoffset = -5;
    
    //Now
    picSymbol.scale = CGPointMake(10,-5);
  • Property imageName has been removed. No replacement.

AGSFeatureLayer

The method selectFeature:withSelectionMethod: has been deprecated and replaced with setSelected:forGraphic:.

//Earlier
//1. Selecting a feature
[featureLayer selectFeature:feature withSelectionMethod:AGSFeatureLayerSelectionMethodAdd];
//2. Unselecting a feature
[featureLayer selectFeature:feature withSelectionMethod:AGSFeatureLayerSelectionMethodSubtract];
//3. Replacing existing selection
[featureLayer selectFeature:feature withSelectionMethod:AGSFeatureLayerSelectionMethodNew];


//Now
//1. Selecting a feature
[featureLayer setSelected:YES forGraphic:feature];
//2. Unselecting a feature
[featureLayer setSelected:NO forGraphic:feature];
//3. Replacing existing selection
[featureLayer clearSelection];
[featureLayer setSelected:YES forGraphic:feature];

AGSTemporalRenderer

This class has been temporarily removed. Re-introducing it in a future release will be considered.

AGSExportMapImageDelegate

This protocol has been removed. No replacement.

AGSTiledLayerTileDelegate

This protocol has been removed. No replacement.

Category methods

All category methods have been prefixed with ags_ to avoid naming conflicts with other libraries.

  • NSDictionary
    • Method encodeQueryParams: renamed ags_encodeQueryParams:.
    • Method encodeJSON: renamed ags_encodeJSON:.
    • Method stringByApplyingTemplate: renamed ags_stringByApplyingTemplate:.
    • Method safeGetObjectForKey: renamed ags_safeGetObjectForKey:.
    • Method safeValueForKey: renamed ags_safeValueForKey:.
    • Method safeObjectForKey: renamed ags_safeObjectForKey:.
  • NSMutableDictionary
    • Method safeSetObject:forKey: renamed ags_safeSetObject:forKey:.
    • Method safeSetObject:forKey:useNSNull: renamed ags_safeSetObject:forKey:useNSNull:.
  • NSError
    • Method isAuthenticationError renamed ags_isAuthenticationError.
  • NSString
    • Method stringFromData: renamed ags_stringFromData:.
    • Method AGSJSONValue renamed ags_JSONValue.
  • NSOperationQueue
    • Method cancelOperationsForTarget: renamed ags_cancelOperationsForTarget:.
  • NSURLConnection
    • Method trustedHosts renamed ags_trustedHosts.
  • NSObject
    • Method AGSJSONRepresentation renamed ags_JSONRepresentation.
  • NSData
    • Method AGSJSONValue renamed ags_JSONValue.

UIApplication

Method showNetworkActivityIndicator: moved to class AGSApplication.

//Earlier
[UIApplication showNetworkActivityIndicator:YES];

//Now
[AGSApplication showNetworkActivityIndicator:YES];

UIDevice

Method isIPad moved to class AGSDevice.

//Earlier
[[[UIDevice] currentDevice] isIPad]

//Now
[[[AGSDevice currentDevice] isIPad]

Related topics