Replaced Markdown syntax with HTML syntax for hyperlinks in documentation comments. HTML links work both inside Xcode (whether Objective-C or Swift) and on the Web (via jazzy).
Fixes#3961.
MGLMapView observes changes to the coordinate property of each MGLAnnotation added to it. Changing the coordinate property in a KVO-compliant way causes the annotation to be relocated and its callout view, if present, to be dismissed. To avoid observing the same annotation twice yet also avoid expensive lookups when adding or removing annotations, MGLMapView indexes added point annotations in an NSMutableSet.
MGLMapView observes changes to the coordinate property of each MGLAnnotation added to it. Changing the coordinate property in a KVO-compliant way causes the annotation to be relocated and its callout view, if present, to be dismissed. To avoid observing the same annotation twice yet also avoid expensive lookups when adding or removing annotations, MGLMapView indexes added point annotations in an NSMutableSet.
In iosapp, tapping a callout view moves the selected annotation to the center of the screen and deselects it.
Fixes#1980.
Added an API for deleting unused annotation images’ images. When you nil out the image of an MGLAnnotationImage, MGLMapView deletes the sprite from the style and recreates any annotation associated with the MGLAnnotationImage instance; the MGLAnnotationImage’s falls back to SDK’s default annotation image.
In iosapp, deselecting an annotation resets its image to the default; deselecting it again restores the image.
ref #3185
Fixed a deadlock that could occur if the host application attempts to set user defaults on a background queue. Now we observer user defaults changes synchronously.
If no access token is found in user defaults at launch, iosapp prompts the user for an access token. Renamed the user defaults key for the access token to conform to Cocoa naming conventions.
Fixes#4696.
Use UIView animation to explicitly animate the user dot between user location updates. There is a tricky special case, which is that the callout must point to the annotation view’s implicit frame but must quickly rendezvous with the explicit frame.
Fixes#1041.
Now that #4641 has removed the prohibition against C99 extensions, this change removes many pragma statements that suppress warnings about variadic macros and designated initializers. Designated initializers and Elvis operators have been introduced wherever appropriate.
A workspace places derived data under ~/Library/ by default. We need it to live under build/ for all users. Instead of a legacy-style build products directory, force a workspace-relative DerivedData directory that matches the standard Xcode 4+ layout. Share the workspace settings file that forces the setting. Note that Xcode places its build and index output one level deeper than xcodebuild does.
Also fixed make ipackage-sim by conditionalizing anything related to the .dSYM file, which isn’t generated in the Debug configuration.
The iOS and OS X SDKs now share a non-UI test bundle. Moved the iOS UI test bundle into a uitest/ subdirectory and moved the OS X SDK tests into the darwin/ subdirectory.
Upgraded KIF to v3.4.2.
Halved the number of xcodebuild invocations, using a new scheme to string the dynamic and static builds together in each invocation. Removed unnecessary build flag overrides like ARCHS.
Removed support for building the SDK without Bitcode support via an environment variable. If you need to build without Bitcode support, set the ENABLE_BITCODE build setting in the project editor for the relevant Xcode target.
Xcode’s static library template comes with the -ObjC linker flag by default. Instead of removing that flag, this change removes the various imperfect workarounds we’ve been using to ensure that private SDK categories link. Given the size decrease in this static library since #2966 was fixed, we should have room to spare for the more straightforward approach. Moreover, an application that uses MGLMapView in a storyboard no longer needs to add -ObjC to the application target, which bloated the entire application, including other frameworks that had no need for -ObjC.
-ObjC isn’t even needed for dynamic frameworks, and the OS X SDK is only built as a dynamic framework.
Added a new Cocoa Touch dynamic framework target and Cocoa Touch static library target to the main iOS Xcode project. The targets are based on the templates provided by Xcode. They contain headers and source files in the darwin/ and ios/ subdirectories. Headers are explicitly marked public or project-internal instead of implicitly by subdirectory.
The SDK targets have a few dependencies that are managed by mason. Transform the config.gypi generated by configure into an .xcconfig file that Xcode uses to fill in compiler and linker flags.
Removed the iossdk target from platform.gypi and pared down the platform-lib target. make iproj opens the overall Xcode workspace instead of just the core project.
Resolved some warnings that are only now appearing because we’re using the standard warning and error flags instead of the pedantic and somewhat inappropriate flags that were forced by the gyp configuration files. Removed a console message informing developers of a long-ago deleted delegate method; the message was triggering a “selector not found” warning. Conditionalized some deprecated symbol usage that’s still needed for the static framework but not the dynamic framework, due to differing minimum deployment targets.
Added a build phase to the static library target that copies headers for use with the static library itself. This would allow us to potentially include a header in the dynamic framework but not the static library and vice-versa.
Updated the changelog to note that unused SVG files have been removed from the distribution.
It’s common enough to need a general Objective-C exception breakpoint that it should be made available to all developers by default. It’s disabled by default, since it may obscure the exception message.
ios.xcodeproj is an ordinary Xcode project with ordinary Xcode targets for iosapp and ios-bench, all contained in an ordinary Xcode workspace that happens to also reference the gyp-generated platform.xcodeproj. The iosapp target links to and embeds Mapbox.framework, which is a product of the gyp-generated platform.xcodeproj. ios-tests.xcodeproj is also in the workspace, enabling simultaneous debugging of KIF tests, the SDK, and core code.
Moved storyboards into Base.lproj and image assets into an asset catalog. Removed iOS 6 assets from the iosapp asset catalog. Moved the original ios-bench application icon SVG into a non-project location.
Removed app/Settings.bundle, which is identical to framework/Settings.bundle.
Removed a broken reference to an unused header from the ios-tests project.