diff --git a/SuperViewMemLeak/RefCycles.userprefs b/SuperViewMemLeak/RefCycles.userprefs
new file mode 100644
index 0000000..7e3232c
--- /dev/null
+++ b/SuperViewMemLeak/RefCycles.userprefs
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SuperViewMemLeak/SuperViewMemLeak.sln b/SuperViewMemLeak/SuperViewMemLeak.sln
new file mode 100644
index 0000000..092b4ac
--- /dev/null
+++ b/SuperViewMemLeak/SuperViewMemLeak.sln
@@ -0,0 +1,32 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SuperViewMemLeak", "SuperViewMemLeak\SuperViewMemLeak.csproj", "{5C615257-AE59-40B4-9BDC-1F614526BEAD}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|iPhoneSimulator = Debug|iPhoneSimulator
+ Release|iPhoneSimulator = Release|iPhoneSimulator
+ Debug|iPhone = Debug|iPhone
+ Release|iPhone = Release|iPhone
+ Ad-Hoc|iPhone = Ad-Hoc|iPhone
+ AppStore|iPhone = AppStore|iPhone
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.AppStore|iPhone.Build.0 = AppStore|iPhone
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.Debug|iPhone.ActiveCfg = Debug|iPhone
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.Debug|iPhone.Build.0 = Debug|iPhone
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.Release|iPhone.ActiveCfg = Release|iPhone
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.Release|iPhone.Build.0 = Release|iPhone
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ EndGlobalSection
+ GlobalSection(MonoDevelopProperties) = preSolution
+ StartupItem = SuperViewMemLeak\SuperViewMemLeak.csproj
+ EndGlobalSection
+EndGlobal
diff --git a/SuperViewMemLeak/SuperViewMemLeak.userprefs b/SuperViewMemLeak/SuperViewMemLeak.userprefs
new file mode 100644
index 0000000..f7f66b1
--- /dev/null
+++ b/SuperViewMemLeak/SuperViewMemLeak.userprefs
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SuperViewMemLeak/SuperViewMemLeak/AppDelegate.cs b/SuperViewMemLeak/SuperViewMemLeak/AppDelegate.cs
new file mode 100644
index 0000000..3ddb52d
--- /dev/null
+++ b/SuperViewMemLeak/SuperViewMemLeak/AppDelegate.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using MonoTouch.Foundation;
+using MonoTouch.UIKit;
+
+namespace RefCycles
+{
+ // The UIApplicationDelegate for the application. This class is responsible for launching the
+ // User Interface of the application, as well as listening (and optionally responding) to
+ // application events from iOS.
+ [Register ("AppDelegate")]
+ public partial class AppDelegate : UIApplicationDelegate
+ {
+ // class-level declarations
+ UIWindow window;
+ MainController _mainController;
+ public override bool FinishedLaunching (UIApplication app, NSDictionary options)
+ {
+ window = new UIWindow (UIScreen.MainScreen.Bounds);
+ _mainController = new MainController ();
+ window.RootViewController = _mainController;
+ window.MakeKeyAndVisible ();
+
+ return true;
+ }
+ }
+}
+
diff --git a/SuperViewMemLeak/SuperViewMemLeak/Entitlements.plist b/SuperViewMemLeak/SuperViewMemLeak/Entitlements.plist
new file mode 100644
index 0000000..5ea1ec7
--- /dev/null
+++ b/SuperViewMemLeak/SuperViewMemLeak/Entitlements.plist
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/SuperViewMemLeak/SuperViewMemLeak/Info.plist b/SuperViewMemLeak/SuperViewMemLeak/Info.plist
new file mode 100644
index 0000000..bb8383d
--- /dev/null
+++ b/SuperViewMemLeak/SuperViewMemLeak/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDisplayName
+ RefCycles
+ CFBundleIdentifier
+ com.your-company.RefCycles
+ UIDeviceFamily
+
+ 1
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ MinimumOSVersion
+ 6.0
+
+
diff --git a/SuperViewMemLeak/SuperViewMemLeak/Main.cs b/SuperViewMemLeak/SuperViewMemLeak/Main.cs
new file mode 100644
index 0000000..9fec489
--- /dev/null
+++ b/SuperViewMemLeak/SuperViewMemLeak/Main.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using MonoTouch.Foundation;
+using MonoTouch.UIKit;
+
+namespace RefCycles
+{
+ public class Application
+ {
+ // This is the main entry point of the application.
+ static void Main (string[] args)
+ {
+ // if you want to use a different Application Delegate class from "AppDelegate"
+ // you can specify it here.
+ UIApplication.Main (args, null, "AppDelegate");
+ }
+ }
+}
diff --git a/SuperViewMemLeak/SuperViewMemLeak/MainController.cs b/SuperViewMemLeak/SuperViewMemLeak/MainController.cs
new file mode 100644
index 0000000..bb17c3a
--- /dev/null
+++ b/SuperViewMemLeak/SuperViewMemLeak/MainController.cs
@@ -0,0 +1,77 @@
+using System;
+
+using MonoTouch.UIKit;
+using System.Drawing;
+using System.Reflection;
+
+namespace RefCycles
+{
+ public class MainController : UIViewController
+ {
+ private UIButton _button;
+
+ public override void ViewDidLoad ()
+ {
+ base.ViewDidLoad ();
+ View.BackgroundColor = UIColor.White;
+
+ _button = new UIButton (new RectangleF(10f, 30f, 0f, 0f));
+ _button.TouchUpInside += HandleTouchUpInside;
+ _button.SetTitle ("click me", UIControlState.Normal);
+ _button.SetTitleColor (UIColor.Blue, UIControlState.Normal);
+ _button.SizeToFit ();
+
+ View.AddSubview (_button);
+ }
+
+ private void HandleTouchUpInside (object sender, EventArgs e)
+ {
+ Console.WriteLine ("HandleTouchUpInside");
+
+ /*
+ // Dont leak
+ UIView v1 = new UIView ();
+ UIView v2 = new UIView ();
+ */
+
+ /*
+ // Dont leak
+ UIView v1 = new DebugView ();
+ UIView v2 = new UIView ();
+ */
+
+ /*
+ // Leak
+ UIView v1 = new UIView ();
+ UIView v2 = new DebugView ();
+ */
+
+ // Leak
+ UIView v1 = new DebugView ();
+ UIView v2 = new DebugView ();
+
+
+ v1.AddSubview (v2);
+ View.AddSubview (v1);
+
+ var sv = v2.Superview; // cause of leak
+ //v2.ResetSuperViewChache (); // uncomment to fix
+
+ v1.RemoveFromSuperview ();
+ }
+ }
+
+ public class DebugView: UIView
+ {
+ }
+
+ public static class Ext
+ {
+ public static void ResetSuperViewChache(this UIView view)
+ {
+ Type t = typeof(UIView);
+ FieldInfo fInfo = t.GetField("__mt_Superview_var", BindingFlags.NonPublic | BindingFlags.Instance);
+ fInfo.SetValue (view, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/SuperViewMemLeak/SuperViewMemLeak/SuperViewMemLeak.csproj b/SuperViewMemLeak/SuperViewMemLeak/SuperViewMemLeak.csproj
new file mode 100644
index 0000000..1581da1
--- /dev/null
+++ b/SuperViewMemLeak/SuperViewMemLeak/SuperViewMemLeak.csproj
@@ -0,0 +1,105 @@
+
+
+
+ Debug
+ iPhoneSimulator
+ 10.0.0
+ 2.0
+ {5C615257-AE59-40B4-9BDC-1F614526BEAD}
+ {6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ RefCycles
+ Resources
+ RefCycles
+
+
+ true
+ full
+ false
+ bin\iPhoneSimulator\Debug
+ DEBUG;
+ prompt
+ 4
+ false
+ None
+ Entitlements.plist
+ true
+ true
+ true
+
+
+ full
+ true
+ bin\iPhoneSimulator\Release
+ prompt
+ 4
+ None
+ false
+ Entitlements.plist
+
+
+ true
+ full
+ false
+ bin\iPhone\Debug
+ DEBUG;
+ prompt
+ 4
+ false
+ Entitlements.plist
+ true
+ iPhone Developer
+
+
+ full
+ true
+ bin\iPhone\Release
+ prompt
+ 4
+ Entitlements.plist
+ false
+ iPhone Developer
+
+
+ full
+ true
+ bin\iPhone\Ad-Hoc
+ prompt
+ 4
+ false
+ Entitlements.plist
+ true
+ Automatic:AdHoc
+ iPhone Distribution
+
+
+ full
+ true
+ bin\iPhone\AppStore
+ prompt
+ 4
+ iPhone Distribution
+ Entitlements.plist
+ false
+ Automatic:AppStore
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file