xamarin-macios/src
Chris Hamons 364fe874cd [XM] Fix Argument Semantics on NSTextContainer.TextView (#1309)
- https://bugzilla.xamarin.com/show_bug.cgi?id=43236
- In Xcode 8b3, Apple changed this property to depend on the deployment target
  for weak/strong'ness

  +#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
   @property (nullable, strong) NSTextView *textView;
   +#else
   +@property (nullable, weak) NSTextView *textView;
   +#endif
    @end
- We could parse the MacO headers to get this and change
 strong/weak'ness but:
- It is easier to default to weak, the "safe" option. It introduces a possible
 leak but you can null it out in that rare case.
- If Apple does this more regularly, we may have to readdress
2016-12-08 12:28:30 +01:00
..
AVFoundation [avfoundation] Fix incorrect selector for AVPlayerItemVideoOutput .ctor. Fixes #48382 (#1276) 2016-12-01 17:01:42 -05:00
AVKit [AVFoundation] Low hanging fruits and xtro of AVFoundation (#980) 2016-11-07 09:32:56 -06:00
Accelerate Build the platform assemblies. 2016-04-24 14:47:26 -04:00
Accounts Build the platform assemblies. 2016-04-24 14:47:26 -04:00
AddressBook Build the platform assemblies. 2016-04-24 14:47:26 -04:00
AddressBookUI Build the platform assemblies. 2016-04-24 14:47:26 -04:00
AppKit Add a number of missing [Flags] in various enums (#1310) 2016-12-07 09:35:22 -06:00
AssetsLibrary Build the platform assemblies. 2016-04-24 14:47:26 -04:00
AudioToolbox Add comments for reviewed usage of pinned GCHandles. (#1290) 2016-12-02 14:13:59 +01:00
AudioUnit Replace pinned GCHandles with unsafe code. (#1286) 2016-12-02 09:37:04 +01:00
CFNetwork Build the platform assemblies. 2016-04-24 14:47:26 -04:00
CallKit [Callkit] Update CallKit bindings to Xcode 8 Beta 3 (#422) 2016-07-19 08:04:15 -04:00
Carbon Build the platform assemblies. 2016-04-24 14:47:26 -04:00
ClockKit [clockkit][watchos] Update for beta 1-3 (#459) 2016-07-22 17:13:49 -04:00
CloudKit [cloudkit] Some fixes after auditing (#762) 2016-09-07 00:57:25 -05:00
Contacts Build the platform assemblies. 2016-04-24 14:47:26 -04:00
CoreAnimation [foundation] Use more generated code for NSRunLoopMode and add helper API 2016-09-15 13:27:03 -04:00
CoreBluetooth [Mac] CoreBluetooth low hanging fruit bindings (#947) 2016-10-05 11:10:32 -05:00
CoreData [CoreData] Update the api for Xcode 8 and add some small fixes in general. (#505) 2016-08-01 15:50:01 -04:00
CoreFoundation Replace pinned GCHandles with unsafe code. (#1286) 2016-12-02 09:37:04 +01:00
CoreGraphics Add comments for reviewed usage of pinned GCHandles. (#1290) 2016-12-02 14:13:59 +01:00
CoreImage [tests] Fix intro failures reported from iOS 6.1 and 7.1 devices (#629) 2016-08-18 23:02:42 -04:00
CoreLocation [watchos] Remove several [Obsolete] API when alternatives exists (#742) 2016-09-02 10:02:29 -04:00
CoreMedia Add comments for reviewed usage of pinned GCHandles. (#1290) 2016-12-02 14:13:59 +01:00
CoreMidi [CoreMidi] Make FindByUniqueId public (#1218) 2016-11-21 10:30:56 +01:00
CoreMotion Build the platform assemblies. 2016-04-24 14:47:26 -04:00
CoreServices [XM] Remove TODO from LaunchServices.cs because LSOpenFromURLSpec is deprecated (#930) 2016-09-30 17:13:33 -04:00
CoreSpotlight [corespotlight] Update for iOS 10 beta 1 (#344) 2016-07-04 19:18:46 -04:00
CoreTelephony [coretelephony] Add deprecations, in favour of CallKit, for iOS 10 beta 1 (#279) 2016-06-27 19:55:12 -04:00
CoreText Merge branch 'cycle8' into xcode8 2016-07-19 14:27:59 -04:00
CoreVideo Add comments for reviewed usage of pinned GCHandles. (#1290) 2016-12-02 14:13:59 +01:00
CoreWlan [corewlan] Added CWWiFiClient class. (#853) 2016-09-22 09:39:57 -04:00
Darwin Build the platform assemblies. 2016-04-24 14:47:26 -04:00
EventKit Build the platform assemblies. 2016-04-24 14:47:26 -04:00
EventKitUI Build the platform assemblies. 2016-04-24 14:47:26 -04:00
ExternalAccessory [tvos][externalaccessory] Enable framework on platform (#470) 2016-07-24 10:44:19 -04:00
FinderSync [Mac] Add support for os x extensions (#83) 2016-05-25 17:20:33 -04:00
Foundation Add a number of missing [Flags] in various enums (#1310) 2016-12-07 09:35:22 -06:00
GLKit [glkit] Small update for iOS 10 beta 1 (#351) 2016-07-06 11:19:21 -04:00
GameController [tests] Fix introspection tests running on an iOS 9.3 device (#380) 2016-07-12 09:46:41 -04:00
GameKit [Mac] Activate gamekit bindings shared with iOS (#924) 2016-09-30 09:13:17 -05:00
GameplayKit [GameplayKit] Avoid generic GKObstacleGraph leak into monotouch.dll (#734) 2016-09-01 14:29:49 -04:00
HealthKit [healthkit] Update for iOS 10 GM (#800) 2016-09-07 18:19:19 -04:00
HomeKit [HomeKit] Put availability attribute for tvOS on the type, never the member. (#785) 2016-09-07 08:44:17 -04:00
ImageIO [imageio] Update for beta 2 (#379) 2016-07-12 16:21:30 -04:00
ImageKit Build the platform assemblies. 2016-04-24 14:47:26 -04:00
InputMethodKit Build the platform assemblies. 2016-04-24 14:47:26 -04:00
Intents [intents] Use nicer `bool?` instead of NSNumber in the API 2016-09-01 21:27:37 -04:00
JavaScriptCore Build the platform assemblies. 2016-04-24 14:47:26 -04:00
LocalAuthentication [localauthentication] Update to beta 5 (#600) 2016-08-12 12:57:57 +02:00
MapKit [mapkit] Small update for iOS 10 beta 1 (#311) 2016-06-28 23:19:15 -07:00
MediaAccessibility Build the platform assemblies. 2016-04-24 14:47:26 -04:00
MediaLibrary Build the platform assemblies. 2016-04-24 14:47:26 -04:00
MediaPlayer [mediaplayer] Update for iOS 10.1 Beta1 2016-09-30 11:55:00 +02:00
MediaToolbox Fix FetchString change from PR335, other (wrong) cases and reduce code duplication (#389) 2016-07-19 08:44:59 -04:00
MessageUI [messageui] Update for iOS 10 beta 1 & 3 (#431) 2016-07-20 08:12:46 -04:00
Metal Add comments for reviewed usage of pinned GCHandles. (#1290) 2016-12-02 14:13:59 +01:00
MetalKit [metalkit] Add new API from both beta 1 and beta 2 (#383) 2016-07-12 23:10:55 -04:00
MetalPerformanceShaders [MetalPerformanceShaders] Fix MPSImageHistogramInfo layout. 2016-10-13 17:35:49 +02:00
MobileCoreServices Build the platform assemblies. 2016-04-24 14:47:26 -04:00
ModelIO [modelio] Add missing availability attributes on new API. Fixes #44192 (#831) 2016-09-13 20:32:27 -04:00
MultipeerConnectivity [tvos][multipeerconnectivity] Decorate API with [TV (10,0)] (#473) 2016-07-25 08:15:41 -04:00
NativeTypes [CoreGraphics] Fix CGRect.Inflate to work correctly, and add tests. Fixes #41684. (#225) 2016-06-17 10:45:58 -07:00
NetworkExtension [networkextension] Mark NEPacketTunnelNetworkSettings default .ctor obsolete (#1267) 2016-11-30 09:55:05 -05:00
NewsstandKit Build the platform assemblies. 2016-04-24 14:47:26 -04:00
NotificationCenter [notificationcenter] Update for iOS 10 beta 1 (#323) 2016-07-04 19:17:28 -04:00
ObjCRuntime [XM] Fall back to side by side loading of libxammac.dylib (#1264) 2016-12-05 12:21:43 -06:00
OpenGL Build the platform assemblies. 2016-04-24 14:47:26 -04:00
OpenGLES Build the platform assemblies. 2016-04-24 14:47:26 -04:00
PassKit [src] Fix compiler warning about referencing obsolete member. (#1168) 2016-11-11 17:42:57 +01:00
PdfKit Build the platform assemblies. 2016-04-24 14:47:26 -04:00
Photos [photos] Update for iOS 10 beta 1 (#348) 2016-07-06 23:24:31 -04:00
PhotosUI [tvos][photosui] Enable on tvOS (new in beta 4) (#576) 2016-08-09 08:17:47 -04:00
PrintCore Add missing PrintCore API PMGetAdjustedPaperRect (#1163) 2016-11-10 14:07:59 -06:00
QTKit Build the platform assemblies. 2016-04-24 14:47:26 -04:00
QuickLook Build the platform assemblies. 2016-04-24 14:47:26 -04:00
QuickLookUI Build the platform assemblies. 2016-04-24 14:47:26 -04:00
ReplayKit [ReplayKit] Fix RPBroadcastConfiguration.VideoCompressionProperties to have the right type and provide a strongly typed version as well. (#806) 2016-09-09 11:31:57 -04:00
SafariServices [XM] More xtro-sharpie fixes (#682) 2016-08-26 12:32:45 -05:00
SceneKit [tvos][scenekit] Fix binary compatibility with earlier versions (even if Apple removed some API) 2016-08-28 11:29:35 -04:00
ScriptingBridge Build the platform assemblies. 2016-04-24 14:47:26 -04:00
SearchKit Fix FetchString change from PR335, other (wrong) cases and reduce code duplication (#389) 2016-07-19 08:44:59 -04:00
Security [Security] Refactor P/Invokes to not use GCHandles. (#1285) 2016-12-01 19:38:56 +01:00
Social [XM] Fix xtro-sharpie issues (#620) 2016-08-17 20:11:05 -04:00
SpriteKit Replace pinned GCHandles with unsafe code. (#1286) 2016-12-02 09:37:04 +01:00
StoreKit [storekit] Update for iOS 10.1 beta 2 (#977) 2016-10-13 11:23:37 -04:00
System.ComponentModel Build the platform assemblies. 2016-04-24 14:47:26 -04:00
SystemConfiguration [systemconfiguration] Small update for iOS 10 beta 1 (#312) 2016-06-28 23:18:44 -07:00
TVServices Build the platform assemblies. 2016-04-24 14:47:26 -04:00
Twitter Build the platform assemblies. 2016-04-24 14:47:26 -04:00
UIKit [tests][intro] Add checks for [Field] that should have [Notification] attributes (#1289) 2016-12-02 12:05:05 -05:00
UserNotifications [UserNotifications] Fix xtro test results and bug in UNNotificationResponse (#455) 2016-07-22 08:11:28 -04:00
VideoSubscriberAccount [VideoSubscriberAccount] Remove 'virtual' from methods that shouldn't be overridden. 2016-09-02 20:31:35 +02:00
VideoToolbox [videotoolbox] VTCompressionOutputCallback allows a null CMSampleBufferRef. Fixes #44073 (#827) 2016-09-16 11:16:18 -04:00
WKWebKit [XM] Fix xtro-sharpie issues (#620) 2016-08-17 20:11:05 -04:00
WatchConnectivity Build the platform assemblies. 2016-04-24 14:47:26 -04:00
WatchKit [WatchKit] Bind [WKInterfaceDevice preferredContentSizeCategory] as PreferredContentSizeCategoryString. Fixes #44456. (#878) 2016-09-22 18:08:42 +02:00
WebKit [XM] Fix xtro-sharpie issues (#620) 2016-08-17 20:11:05 -04:00
iAd [iAd] Add deprecations for iOS 10 beta 1 (#289) 2016-06-27 19:56:35 -04:00
.gitignore Build the platform assemblies. 2016-04-24 14:47:26 -04:00
AssemblyInfo.cs.in Build the platform assemblies. 2016-04-24 14:47:26 -04:00
Compat.iOS.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
Compat.mac.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
Constants.iOS.cs.in [IntentsUI] Add IntentsUI framework from Xcode 8 b2 (#400) 2016-07-14 20:42:48 -04:00
Constants.mac.cs.in [PrintCore] Add first pass of bindings (#1067) 2016-11-02 13:52:47 -05:00
Constants.tvos.cs.in [tvos] Enable MultipeerConnectivity and ReplayKit frameworks, existing in iOS but just added in tvOS 10 (#361) 2016-07-10 11:15:45 -04:00
Constants.watch.cs.in Enable CloudKit on watchOS builds (#372) 2016-07-11 08:43:37 -04:00
Makefile [build] Remove our usage of deprecated/ignored -new-style option in btouch/bmac (#1277) 2016-12-01 10:36:26 +01:00
Makefile.generator [src] Include netstandard20 System.Drawing types in Xamarin.WatchOS.dll. (#1156) 2016-11-10 14:26:53 +01:00
MonoNativeFunctionWrapperAttribute.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
MonoPInvokeCallbackAttribute.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
MonoTouch.Dialog-1.templ.csproj [tests] Remove Classic test projects, and make the Unified test projects the master projects. (#858) 2016-09-21 22:55:10 +02:00
MonoTouch.Dialog-1.tvos.templ.csproj [src] Add a Release-bitcode configuration to project files. 2016-05-26 17:47:10 +02:00
MonoTouch.NUnitLite.templ.csproj [tests] Remove Classic test projects, and make the Unified test projects the master projects. (#858) 2016-09-21 22:55:10 +02:00
MonoTouch.NUnitLite.tvos.templ.csproj [src] Add a Release-bitcode configuration to project files. 2016-05-26 17:47:10 +02:00
MonoTouch.NUnitLite.watchos.templ.csproj [src] Add a Release-bitcode configuration to project files. 2016-05-26 17:47:10 +02:00
Obsoletes.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
OpenTK.dll.sources Build the platform assemblies. 2016-04-24 14:47:26 -04:00
README.md Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
Version.in Build the platform assemblies. 2016-04-24 14:47:26 -04:00
accelerate.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
accounts.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
addressbook.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
addressbookui.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
adsupport.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
appkit.cs [XM] Fix Argument Semantics on NSTextContainer.TextView (#1309) 2016-12-08 12:28:30 +01:00
assetslibrary.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
audiotoolbox.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
audiounit.cs [tvos] Add missing attributes to get introspection to works on tvOS 9.0, 9.1, 9.2 and 10.0 (#798) 2016-09-07 15:18:20 -04:00
avfoundation.cs [XM] Fix XM bindings to include Notifications and update test (#1307) 2016-12-06 12:29:50 -06:00
avkit.cs [generator] Support [Sealed] on types. Fixes #43995 (#1227) 2016-11-25 13:21:31 -05:00
bmac [build] Remove our usage of deprecated/ignored -new-style option in btouch/bmac (#1277) 2016-12-01 10:36:26 +01:00
bmac.csproj Build the platform assemblies. 2016-04-24 14:47:26 -04:00
btouch-native.in Build the platform assemblies. 2016-04-24 14:47:26 -04:00
btouch.cs [generator] Use CurrentPlatform instead of platform-specific ifdefs. (#1293) 2016-12-02 14:13:12 +01:00
btouch.csproj Build the platform assemblies. 2016-04-24 14:47:26 -04:00
btouch.in Build the platform assemblies. 2016-04-24 14:47:26 -04:00
bwatch.in Build the platform assemblies. 2016-04-24 14:47:26 -04:00
callkit.cs [CallKit] Removing CXCallDirectoryProvider.BeginRequest no need for it 2016-09-01 13:48:13 -05:00
cfnetwork.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
clockkit.cs [clockkit][watchos] Update for beta 1-3 (#459) 2016-07-22 17:13:49 -04:00
cloudkit.cs [cloudkit] Some fixes after auditing (#762) 2016-09-07 00:57:25 -05:00
contacts.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
contactsui.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
contactsui.mac.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
coreanimation.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
coreaudiokit.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
corebluetooth.cs [Mac] CoreBluetooth low hanging fruit bindings (#947) 2016-10-05 11:10:32 -05:00
coredata.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
corefoundation.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
coregraphics.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
coreimage.cs [CoreImage] Add missing property ColorSpace to CIImage (#906) 2016-09-28 12:33:51 +02:00
corelocation.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
coremedia.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
coremidi.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
coremotion.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
coreservices.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
corespotlight.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
coretelephony.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
coretext.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
corevideo.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
corewlan.cs [corewlan] Added CWWiFiClient class. (#853) 2016-09-22 09:39:57 -04:00
custom-make.sh Build the platform assemblies. 2016-04-24 14:47:26 -04:00
error.cs [generator] Refactor GetSDKRoot to remove an #ifdef. (#1280) 2016-12-01 18:49:41 +01:00
eventkit.cs AddressBook isn't in Xamarin.Mac. (#1304) 2016-12-05 19:40:47 +01:00
eventkitui.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
externalaccessory.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
findersync.cs Bind FIFinderSync correctly (has both class and protocol with same name) (#145) 2016-06-08 14:03:53 +02:00
foundation.cs [XM] Fix XM bindings to include Notifications and update test (#1307) 2016-12-06 12:29:50 -06:00
frameworks.sources AddressBook isn't in Xamarin.Mac. (#1304) 2016-12-05 19:40:47 +01:00
gamecontroller.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
gamekit.cs [Mac] Activate gamekit bindings shared with iOS (#924) 2016-09-30 09:13:17 -05:00
gameplaykit.cs [GameplayKit] Update from Xcode8 Beta 1 to Beta 6 (#689) 2016-08-30 15:32:46 -04:00
generator-diff.mk [src] Add makefile targets to calculate a diff of generated source code. (#1230) 2016-11-23 12:29:44 +01:00
generator-enums.cs [generator] Optimize smart enums support (#1249) 2016-11-28 08:32:15 -05:00
generator-filters.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
generator.cs [generator] Replace ifdef with normal code condition. (#1305) 2016-12-05 19:39:14 +01:00
generator.csproj Build the platform assemblies. 2016-04-24 14:47:26 -04:00
generator.sln Build the platform assemblies. 2016-04-24 14:47:26 -04:00
glkit.cs [tvos] Add missing attributes to get introspection to works on tvOS 9.0, 9.1, 9.2 and 10.0 (#798) 2016-09-07 15:18:20 -04:00
global.css Build the platform assemblies. 2016-04-24 14:47:26 -04:00
healthkit.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
healthkitui.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
homekit.cs [tests][intro] Add checks for [Field] that should have [Notification] attributes (#1289) 2016-12-02 12:05:05 -05:00
iad.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
imageio.cs [tvos] Add missing attributes to get introspection to works on tvOS 9.0, 9.1, 9.2 and 10.0 (#798) 2016-09-07 15:18:20 -04:00
imagekit.cs [XM] Fix XM bindings to include Notifications and update test (#1307) 2016-12-06 12:29:50 -06:00
inputmethodkit.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
intents.cs [tests][xtro] Add a few, late, xtro data and remove comments post audit (#828) 2016-09-23 13:04:18 -04:00
intentsui.cs [intentsui] Simplify bindings for INImage_IntentsUI (#700) 2016-08-29 16:48:13 -04:00
javascriptcore.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
localauthentication.cs [localauthentication] Update to beta 5 (#600) 2016-08-12 12:57:57 +02:00
mapkit.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
mediaaccessibility.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
medialibrary.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
mediaplayer.cs [tests][intro] Add checks for [Field] that should have [Notification] attributes (#1289) 2016-12-02 12:05:05 -05:00
mediatoolbox.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
messages.cs [audit] Add comments on two correct, but uncommon, binding patterns (#761) 2016-09-04 12:40:45 -04:00
messageui.cs [messageui] Update for iOS 10 beta 1 & 3 (#431) 2016-07-20 08:12:46 -04:00
metal.cs [Mac] SceneKit and Metal low hanging fruit bindings from iOS (#931) 2016-10-03 16:02:32 -04:00
metalkit.cs [tvos] Add missing attributes to get introspection to works on tvOS 9.0, 9.1, 9.2 and 10.0 (#798) 2016-09-07 15:18:20 -04:00
metalperformanceshaders.cs [metalperformanceshaders] Remove [DesignatedInitializer] from MPSMatrixMultiplication (#690) 2016-08-27 12:52:59 -04:00
mobilecoreservices.cs [tvos] Add missing attributes to get introspection to works on tvOS 9.0, 9.1, 9.2 and 10.0 (#798) 2016-09-07 15:18:20 -04:00
modelio.cs [tvos] Add missing attributes to get introspection to works on tvOS 9.0, 9.1, 9.2 and 10.0 (#798) 2016-09-07 15:18:20 -04:00
monotouch-dialog.sources Build the platform assemblies. 2016-04-24 14:47:26 -04:00
multipeerconnectivity.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
networkextension.cs [networkextension] Mark NEPacketTunnelNetworkSettings default .ctor obsolete (#1267) 2016-11-30 09:55:05 -05:00
newsstandkit.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
notificationcenter.cs [XM] Add 32-bit variants of apitest and introspection and fix bindings (#1234) 2016-11-30 16:38:32 +01:00
opengl.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
opengles.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
opentk.csproj Build the platform assemblies. 2016-04-24 14:47:26 -04:00
passkit.cs [passkit] API audit: remove default .ctor on PKLabeledValue, add tests for PKLabeledValue and add xtro comments (#979) 2016-10-12 11:30:11 +02:00
pdfkit.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
photos.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
photosui.cs Merge branch 'cycle8' into xcode8 2016-09-06 18:46:23 -04:00
pmcs.in Build the platform assemblies. 2016-04-24 14:47:26 -04:00
printcore.cs [PrintCore] Add first pass of bindings (#1067) 2016-11-02 13:52:47 -05:00
pushkit.cs [pushkit] Small update for iOS 10 beta 1 (#347) 2016-07-04 22:54:38 -04:00
qtkit.cs [XM] Fix XM bindings to include Notifications and update test (#1307) 2016-12-06 12:29:50 -06:00
quartzcomposer.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
quicklook.cs [quicklook] Add new bindings for iOS 10 beta 1 (#272) 2016-06-26 10:04:20 -04:00
quicklookUI.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
replaykit.cs [generator] Support [Sealed] on types. Fixes #43995 (#1227) 2016-11-25 13:21:31 -05:00
rosetta.pl Build the platform assemblies. 2016-04-24 14:47:26 -04:00
safariservices.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
scenekit.cs Mark unsafe SceneKit APIs as DebuggerBrowsableState.Never (#1141) 2016-11-09 13:09:41 -05:00
scriptingbridge.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
searchkit.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
security.cs [Security] Fix bug 44062 - SecRecord is missing a property to enable password access control (#842) 2016-09-16 08:45:16 -04:00
social.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
speech.cs [audit] Add comments on two correct, but uncommon, binding patterns (#761) 2016-09-04 12:40:45 -04:00
spritekit.cs [XM] Add 32-bit variants of apitest and introspection and fix bindings (#1234) 2016-11-30 16:38:32 +01:00
storekit.cs [storekit] Update for iOS 10.1 beta 2 (#977) 2016-10-13 11:23:37 -04:00
system-drawing.sources Build the platform assemblies. 2016-04-24 14:47:26 -04:00
systemconfiguration.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
touch-unit.sources [src] Bump Touch.Unit dependency to get HttpTextWriter addition. (#88) 2016-05-26 15:34:47 +02:00
tvmlkit.cs [tvmlkit][tvos] Update for beta 1 and beta 2 (#371) 2016-07-11 08:42:01 -04:00
tvservices.cs Build the platform assemblies. 2016-04-24 14:47:26 -04:00
twitter.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
uikit.cs [tests][intro] Add checks for [Field] that should have [Notification] attributes (#1289) 2016-12-02 12:05:05 -05:00
usernotifications.cs [UserNotifications] Rename method to have a verb. (#784) 2016-09-07 08:22:51 -04:00
usernotificationsui.cs [UserNotifications] Fix xtro test results and bug in UNNotificationResponse (#455) 2016-07-22 08:11:28 -04:00
videosubscriberaccount.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
videotoolbox.cs [videotoolbox] DestinationICCProfile was already in XM so we can't fix the case (#637) 2016-08-21 18:51:02 -04:00
watchconnectivity.cs [watchconnectivity] Small update for iOS 10 beta 1 (#290) 2016-06-28 11:19:45 -04:00
watchkit.cs [watchos][watchkit] Small updates for Xcode 8.2 beta 1 (#1103) 2016-11-02 22:16:21 -04:00
webkit.cs [XM] Add 32-bit variants of apitest and introspection and fix bindings (#1234) 2016-11-30 16:38:32 +01:00
wkwebkit.cs Remove unnecessary public from binding definition files 2016-09-20 09:20:06 -05:00
xamios.tmpl.csproj [src] Fix project templates. (#1045) 2016-10-28 08:39:07 -04:00
xammac.pc.in Build the platform assemblies. 2016-04-24 14:47:26 -04:00
xammac.tmpl.csproj Build the platform assemblies. 2016-04-24 14:47:26 -04:00
xamtvos.tmpl.csproj [src] Fix project templates. (#1045) 2016-10-28 08:39:07 -04:00
xamwatch.tmpl.csproj [src] Fix project templates. (#1045) 2016-10-28 08:39:07 -04:00

README.md

Platform assemblies

This directory contains the source code and build logic to build the platform assemblies.

Conditional compilation

These are the symbols defined for each platform assembly:

Assembly Symbols
monotouch.dll IPHONE MONOTOUCH IOS
Xamarin.iOS.dll IPHONE MONOTOUCH IOS XAMCORE_2_0
XamMac.dll MONOMAC XAMARIN_MAC
Xamarin.Mac.dll MONOMAC XAMARIN_MAC XAMCORE_2_0
Xamarin.WatchOS.dll IPHONE MONOTOUCH WATCH XAMCORE_2_0 XAMCORE_3_0
Xamarin.TVOS.dll IPHONE MONOTOUCH TVOS XAMCORE_2_0 XAMCORE_3_0

To build core for only one platform, use the platform unique variables IOS, MONOMAC, WATCH or TVOS.

Core Assemblies

Currently 3 variations of the core Xamarin.iOS assembly and 5 variations of the core Xamarin.Mac assembly are produced:

### Xamarin.iOS ###

  • A 32-bit Classic assembly (uses System.Int32 in place of NSInteger, etc.)
  • A 32-bit Unified assembly (uses System.nint in place of NSInteger, etc.)
  • A 64-bit Unified assembly (same as 32-bit Unified)

### Xamarin.Mac ###

  • A 32-bit Classic assembly (uses System.Int32 in place of NSInteger, etc.)
  • A 32-bit Unified assembly (uses System.nint in place of NSInteger, etc.)
  • A 64-bit Unified assembly (same as 32-bit Unified)
  • A 32-bit Full assembly (uses System.nint in place of NSInteger, and references the v4.5 BCL)
  • A 64-bit Full assembly (same as 32-bit Full)

The Classic assembly will exist in order to not break customer code. Customers can choose to continue using this assembly, but we will encourage customers to move to our Unified assemblies.

The Unified assemblies provides many improvements and support for 64-bit iOS and OS X APIs.

Native Types

Most native APIs use NSInteger (and related) typedefs. On 32-bit systems, these are 32-bit underlying types; on 64-bit systems, these are 64-bit underlying types.

Historically Xamarin.iOS and Xamarin.Mac have bound these explicitly as 32-bit (System.Int32, etc). With the move to 64-bit that has been ongoing in OS X for a few versions (10.6/Snow Leopard) and more recently with the anouncement of 64-bit support in iOS, we needed a solution to support both worlds.

We have introduced 6 new types to make this possible:

Native Type Legacy (32-bit) CIL Type New (32/64-bit) CIL Type
NSInteger System.Int32 System.nint
NSUInteger System.UInt32 System.nuint
CGFloat System.Single System.nfloat
CGSize System.Drawing.SizeF CoreGraphics.CGSize
CGPoint System.Drawing.PointF CoreGraphics.CGPoint
CGRect System.Drawing.RectangleF CoreGraphics.CGRect

In the Classic assembly, the System.Drawing types are backed by the 32-bit System.Single type. In the Unified assemblies, the CoreGraphics types are backed by 32/64-bit System.nfloat type.

When binding APIs, it is important to use the new types (nint, CGRect, etc), even though they do not exist in the Classic assembly.

Before compilation, all source code is preprocessed by pmcs, an internal tool for performing C#-aware preprocessing.

For the Classic assembly, instances of the new types are translated to the legacy types. For the Unified assemblies, these types are not translated, and the native types are included in the build.

Enums

Enums are handled specially. Most native enums are backed by NSInteger or NSUInteger. Unfortunately in C#, the backing type of an enum may only be one of the primitive integral C# types. Thus, an enum cannot be backed by System.nint or System.nuint.

The convention is to make all enums that are backed natively by NSInteger or NSUInteger backed by a 64-bit primitive integral C# type (long or ulong) and then annotated with the [Native] attribute. This ensures that API is identical between the 32/64-bit assemblies but also hints to the code generator that Objective-C runtime calls should first cast the enum to a System.nint or System.nuint.

However, this also presents a problem of keeping the enum 32-bit on the Classic assemblies. Therefore, enums should actually be backed in source code nuint_compat_int. This will be preprocessed to int on the Classic assembly and ulong on the 32/64-bit assemblies.

Native Enum Definition

typedef NS_ENUM(NSUInteger, NSTableViewDropOperation) {
	NSTableViewDropOn,
	NSTableViewDropAbove
};

Managed Enum Definition

[Native]
public enum NSTableViewDropOperation : nuint_compat_int {
	DropOn,
	DropAbove
}

When dealing with enums in P/Invokes, one must never pass such an enum directly. The P/Invoke signature should take a System.nint or System.nuint and a wrapper API must cast the enum manually (as mentioned above, this is handled automatically for Objective-C APIs by the generator).

Objective-C Binding

interface Fooable {
	[Export ("foo:")]
	void Foo (NSTableViewDropOperation dropOp);
}

C Binding

public partial class Fooable {
	[DllImport ("foo")]
	static extern void Foo (nuint dropOp);

	public static void Foo (NSTableViewDropOperation dropOp)
	{
		Foo ((nuint)(ulong)dropOp);
	}
}

pmcs

pmcs is a wrapper around a regular mcs invocation. In addition to any regular arguments passed to mcs, pmcs accepts instructions on how to translate some tokens from one value to another. This is used to translate instances of native types in source code to legacy types for the 32-bit Classic assembly.

pmcs lives in the xamarin-macios repository and is used for both Xamarin.Mac and Xamarin.iOS. Explore pmcs documentation.

#define

There are a few preprocessor variables that can be used within sources for conditional compilation:

Variable Description
MONOMAC defined for Xamarin.Mac builds; not defined for Xamarin.iOS
ARCH_32 defined when the target architecture is 32-bit; this will be defined for Classic and the Unified 32-bit assemblies
ARCH_64 defined when the target architecture is 64-bit; this will be defined only for the Unified 64-bit assembly
XAMCORE_2_0 defined for the Unified assemblies; this should be used for most conditions dealing with API differences between Unified and Classic assemblies
COREBUILD defined when building the intermediate core.dll assembly against which the code generator will produce bindings

For example, to build an API for all of iOS but only 64-bit OS X (Xamarin.Mac):

#if !MONOMAC || (MONOMAC && ARCH_64)
...
#endif