public void RefCount2Test() { NSObject pool = new NSObject(NSObject.AllocAndInitInstance("NSAutoreleasePool")); // No copy, new, or alloc so ref count is one and it's owned by the pool. PrettyData direct = PrettyData.makeDefault(); Assert.AreEqual(1L, direct.retainCount()); // Alloc so pool has no ownership stake. NSObject indirect = (NSObject) new Class("PrettyData").Call("alloc").Call("init"); Assert.AreEqual(1L, indirect.retainCount()); // If we send a message to an object its retain count doesn't change. int value = (int)direct.Call("get33"); Assert.AreEqual(33, value); Assert.AreEqual(1L, direct.retainCount()); pool.release(); // Verify our counts after we empty the release pool. Assert.IsTrue(direct.IsDeallocated()); Assert.AreEqual(1L, indirect.retainCount()); }
public static PrettyData makeDefault() { PrettyData result = (PrettyData) new Class("PrettyData").Call("alloc").Call("init"); result.autorelease(); return(result); }