{"id":13570592,"url":"https://github.com/mono/monomac","last_synced_at":"2025-04-04T07:31:49.989Z","repository":{"id":986585,"uuid":"791358","full_name":"mono/monomac","owner":"mono","description":"Bindings to create MacOS X applications with Mono.","archived":true,"fork":false,"pushed_at":"2020-04-08T04:03:07.000Z","size":16615,"stargazers_count":259,"open_issues_count":12,"forks_count":111,"subscribers_count":52,"default_branch":"master","last_synced_at":"2024-11-05T03:36:43.533Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.mono-project.com/Mono:OSX","language":"C#","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mono.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-07-22T16:30:49.000Z","updated_at":"2024-07-22T16:52:50.000Z","dependencies_parsed_at":"2022-08-16T11:45:11.800Z","dependency_job_id":null,"html_url":"https://github.com/mono/monomac","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mono%2Fmonomac","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mono%2Fmonomac/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mono%2Fmonomac/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mono%2Fmonomac/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mono","download_url":"https://codeload.github.com/mono/monomac/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247138762,"owners_count":20890100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T14:00:53.490Z","updated_at":"2025-04-04T07:31:44.980Z","avatar_url":"https://github.com/mono.png","language":"C#","funding_links":[],"categories":["C# #"],"sub_categories":[],"readme":"MonoMac - .NET/C# Bindings to the Cocoa API\n\n\nDEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED \nDEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED \nDEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED \n\n\tWARNING: MonoMac is not actively maintained, and it has design mistakes\n\tthat prevent it from properly managing memory.   You should use the\n\topen source Xamarin.Mac instead which is actively maintained, and\n\thas none of these design problems.\n\t\nhttps://github.com/xamarin/xamarin-macios.\n\nOLD NOTES:\n\n\tMonoMac provides a new set of C# bindings to the Cocoa APIs on\n\tOSX and can be used to create applications that use the native\n\tOSX APIs using Mono and C#.\n\n\tThe code is licensed under the terms of the open source Apache\n\tLicense version 2 or the MIT X11 license, at your own choice.\n\nBuilding:\n\n\tTo build MonoMac, you need to get two packages:\n\n\t   * maccore\n\t   * monomac\n\n\tThe first contains the code that is shared between MonoMac and\n\tMonoTouch.  MonoMac contains the actual bindings that are\n\tOSX-specific.\n\n\tYou MUST check out both modules side by side currently.\n\tTo build monomac type \"make\" which will create the monomac.dll\n\n\tMonoMac requires Mono v2.6.4 or higher, you can find a RC for\n\t2.6.4 at http://mono.ximian.com/monobuild/preview/download-preview/\n\nUsing:\n\n\tDownload the MonoDevelop IDE from www.monodevelop.com for MacOS X,\n\tit comes with both MonoMac templates and project types that will\n\thelp you get started.\n\nMore Information:\n\n\thttp://www.mono-project.com/MonoMac\n\nDiscussion:\n\n\tThe discussion of the development of MonoMac is taking place\n\ton irc.gnome.org in channel #monodev and on the\n\tmono-osx@lists.ximian.com mailing list:\n\n\thttp://lists.ximian.com/mailman/listinfo/mono-osx\n\nPending Tasks\n\n\tWe are looking for contributors to these areas:\n\n\t* API binding for the rest of the Frameworks\n\n\t* We need samples to be written\n\n\t* We need tutorials to be written (like the ones we did for\n          MonoTouch)\n\n\t* We need to port existing Cocoa samples to C#:\n\t  * To exercise the binding\n\t  * To serve as reference for new developers\n\t  * To identify missing frameworks\n\t  * To prioritize bindings\n\nBinding APIs\n\n\tInformation on how to bind new APIs can be found on the MonoTouch web site: \n\n\thttp://monotouch.net/Documentation/Binding_New_Objective-C_Types\n\nGoals\n\n\t  We had two main requirements: the binding should just work\n\t  and the code should be MIT X11 licensed.  For the binding to\n\t  just work, we turned to the .NET Framework Design Guidelines\n\t  book as it captures years of design decisions, programming\n\t  idioms and advise that would help C# and .NET developers.  By\n\t  following the Design Guidelines we:\n\n\t\tAvoid surprises\n\t\tBlend with other C# and .NET libraries\n\t\tReduce the room for errors\n\t\tIncrease developer joy\n\t\tMinimizes time for the developer to be productive\n\t\tEvery bit of existing .NET knowledge translates\n\n\tLuckily for us, .NET was designed from the start to be an\n\tinteroperability framework.  A framework that supports the\n\tmost advanced requirements to make multiple runtimes and\n\tframeworks to communicate seamlessly with each other.  We used\n\tthese features to create our bindings.\n\n\tThe above goals turned into the following technical\n\trequirements:\n\n\t  * Developers should be able to consume Cocoa APIs as C# APIs\n\t  * Allow developers to subclass Objective-C classes\n\t  \t* Subclass should work with C# standard constructs\n\t  \t* Derive from an existing class\n\t  \t* Call base constructor\n\t  \t* Overriding methods should be done with C#'s override system\n\t  \t* Do not expose developers to Objective-C selectors\n\t  * Provide a mechanism to call arbitrary Objective-C libraries\n\t  * Make common Objective-C tasks easy, and hard Objective-C tasks possible\n\t  * Expose Objective-C properties as C# properties\n\t\n\t  * Expose a strongly typed API, for example instead of\n\t    exposing the generic-container NSArray or individual\n\t    NSObjects.  This means that developers get a few benefits:\n\n\t  \t* MonoDevelop can flag errors as you write the code\n\n\t  \t* MonoDevelop can present documentation popups on\n\t  \t  types, methods, properties and parameters as you type them.\n\n\t  \t* Minimize runtime errors by catching invalid casts at\n\t  \t  compile time.\n\t  \t  \n\n\t  \t* Encourage in-IDE API exploration without rebuilding,\n\t  \t  and without having to look up the types in the\n\t  \t  documentation.\n\n\t  * Turn int and uint parameters that should have been enums\n\t    as C# enumerations and C# enumerations with [Flags] attributes\n\t  \n\t  * Expose the basic Foundation as C# native types:\n\t  \t* NSString becomes string\n\t  \t* NSArray becomes strongly-typed array\n\t  * Events and notifications, give users a choice\n\t    between:\n\t  \t* Support the Objective-C delegate pattern:\n\t  \t\t* Strongly typed version is the default\n\t  \t\t* Weakly typed version for advance\n\t  \t\tuse cases\n\t  \t* C# event system\n\t  * Class libraries should be MIT X11 licensed, like the rest\n\t    of Mono's class libraries.\n\n\t  * Expose C# delegates (lambdas, anonymous methods and\n\t    System.Delegate) to Objective-C APIs as \"blocks\".\n\n\t  * Curated APIs: there is no point in binding every UNIX or\n\t    CoreFoundation C API available, as those are not very\n\t    useful in practice.  Bind only those that are required to\n\t    build applications or get access to mandatory\n\t    functionality.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmono%2Fmonomac","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmono%2Fmonomac","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmono%2Fmonomac/lists"}