Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by ibankzero · Nov 14, 2014 at 06:43 PM · iosobjectdestroy

Dispose Object in IOS

Hello everybody

I want to clone "Object.Destroy(Object)" method

todo like this Object a = .....; Object b = null; b = a; Object.Destroy(b); Debug.Log(a == null); // true

I think I should use dispose object by my self I create BaseDisposable for this dispose my object

when any class extend BaseDisposable that class can use Dispose() yes it work in editor

but in IOS it not work

XCODE throws exception

 ExecutionEngineException: Attempting to JIT compile method '(wrapper remoting-invoke) object:ToString ()' while running with --aot-only.
 
 
   at System.Runtime.Remoting.Proxies.RealProxy.GetTransparentProxy () [0x00000] in <filename unknown>:0
 
   at System.Runtime.Remoting.RemotingServices.CreateClientProxyForContextBound (System.Type type, System.Object[] activationAttributes) [0x00000] in <filename unknown>:0 
 
   at System.Runtime.Remoting.Activation.ActivationServices.CreateProxyForType (System.Type type) [0x00000] in <filename unknown>:0
 
   at OzEngine.OzWorld.get_Instance () [0x00000] in <filename unknown>:0
 
   at OzWorld_Behaviour.Awake () [0x00000] in <filename unknown>:0
 
 
 (Filename:  Line: -1)
 
 
 ExecutionEngineException: Attempting to JIT compile method '(wrapper remoting-invoke) object:ToString ()' while running with --aot-only.
 
 
   at System.Runtime.Remoting.Proxies.RealProxy.GetTransparentProxy () [0x00000] in <filename unknown>:0
 
   at System.Runtime.Remoting.RemotingServices.CreateClientProxyForContextBound (System.Type type, System.Object[] activationAttributes) [0x00000] in <filename unknown>:0 
 
   at System.Runtime.Remoting.Activation.ActivationServices.CreateProxyForType (System.Type type) [0x00000] in <filename unknown>:0
 
   at OzEngine.OzWorld.get_Instance () [0x00000] in <filename unknown>:0
 
   at RFC_3DManagerUnity.Awake () [0x00000] in <filename unknown>:0
 
 
 (Filename:  Line: -1)

anyway to do it ?

sorry for my poor english

thank for answers

this my BaseDispose using System; using System.Runtime.Remoting.Activation; using System.Runtime.Remoting.Contexts; using System.Runtime.Remoting.Messaging;

 namespace MYSPACE
 {
     public class DisposableAspect : IMessageSink
     {
         private BaseDisposable realobject = null;
 
         public DisposableAspect(IMessageSink next) { NextSink = next; }
 
         public IMessage SyncProcessMessage(IMessage msg)
         {
             if (msg is IMethodMessage)
             {
                 var method = msg as IMethodMessage;
                 BaseDisposable obj = null;
                 IMessage ret = null;
                 if (method.MethodName == ".ctor")
                 {
                     Preprocess(msg);
                     ret = NextSink.SyncProcessMessage(msg);
                     realobject = (BaseDisposable)((IMethodReturnMessage)ret).ReturnValue;
                 }
                 else
                 {
                     obj = realobject;
                     Preprocess(msg, obj);
                     ret = NextSink.SyncProcessMessage(msg);
                 }
                 return ret;
             }
 
             IMessage returnMethod = NextSink.SyncProcessMessage(msg);
             return returnMethod;
         }
 
         private void Preprocess(IMessage msg, BaseDisposable baseDisposable = null)
         {
             if (baseDisposable != null && baseDisposable.IsDisposed) { throw new NullReferenceException("Object reference not set to an instance of object"); }
         }
 
         public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { throw new NotImplementedException(); }
 
         public IMessageSink NextSink { get; private set; }
     }
 
     public class DisposableProperty : IContextProperty, IContributeServerContextSink
     {
         public DisposableProperty() { }
 
         public bool IsNewContextOK(Context newCtx)
         {
             DisposableProperty newContextLogProperty = newCtx.GetProperty(Name) as DisposableProperty;
             return newContextLogProperty != null;
         }
 
         public void Freeze(Context newContext) { }
 
         public string Name { get { return "Disposable"; } }
 
         public IMessageSink GetServerContextSink(IMessageSink nextSink) { return new DisposableAspect(nextSink); }
     }
 
     [AttributeUsage(AttributeTargets.Class)]
     public class DisposableAttribute : ContextAttribute
     {
         public DisposableAttribute() : base("DisposableAttribute") { }
 
         public override void GetPropertiesForNewContext(IConstructionCallMessage ccm) { ccm.ContextProperties.Add(new DisposableProperty()); }
     }
 
     [Disposable()]
     public abstract class BaseDisposable : ContextBoundObject, IDisposable
     {
         private bool _disposed = false;
 
         public bool IsDisposed { get { return _disposed; } }
 
         ~BaseDisposable() { Dispose(false); }
 
         public void Dispose()
         {
             Dispose(true);
             GC.SuppressFinalize(this);
         }
 
         protected virtual void Dispose(bool disposing) { _disposed = true; }
     }
 }
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

2 People are following this question.

avatar image avatar image

Related Questions

How to remove an object from an array once it has been destroyed 1 Answer

Pick up objects 2 Answers

How to destroy a unit contained in multiple lists 1 Answer

Destroy the current GameObject? 7 Answers

destroying object after animation 3 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges