protected static void retain(long handle) { ObjCRuntime.void_objc_msgSend(handle, retain.getHandle()); }
protected static void release(long handle) { ObjCRuntime.void_objc_msgSend(handle, release.getHandle()); }
protected static void autorelease(long handle) { ObjCRuntime.void_objc_msgSend(handle, autorelease.getHandle()); }
private static void enableListener(long handle) { long releaseListener = ObjCRuntime.objc_getAssociatedObject(handle, RELEASE_LISTENER_CLASS); if (releaseListener == 0) { releaseListener = ObjCRuntime.ptr_objc_msgSend(RELEASE_LISTENER_CLASS, alloc.getHandle()); if (releaseListener == 0L) { throw new OutOfMemoryError(); } releaseListener = ObjCRuntime.ptr_objc_msgSend(releaseListener, init.getHandle()); VM.setPointer(releaseListener + OWNER_IVAR_OFFSET, handle); ObjCRuntime.objc_setAssociatedObject(handle, RELEASE_LISTENER_CLASS, releaseListener, OBJC_ASSOCIATION_RETAIN_NONATOMIC); ObjCRuntime.void_objc_msgSend(releaseListener, release.getHandle()); } }
protected static void autorelease(long handle) { ObjCRuntime.void_objc_msgSend(handle, autorelease.getHandle()); }
protected static void retain(long handle) { ObjCRuntime.void_objc_msgSend(handle, retain.getHandle()); }
protected static void retain(long handle) { ObjCRuntime.void_objc_msgSend(handle, retain.getHandle()); }
protected static void release(long handle) { ObjCRuntime.void_objc_msgSend(handle, release.getHandle()); }
protected static void release(long handle) { ObjCRuntime.void_objc_msgSend(handle, release.getHandle()); }
protected static void autorelease(long handle) { ObjCRuntime.void_objc_msgSend(handle, autorelease.getHandle()); }
@Override protected void finalize() throws Throwable { ObjCRuntime.void_objc_msgSend(this.objCBlock.getHandle(), RELEASE_SELECTOR.getHandle()); } }
public static void registerSubclass(Class<? extends PFObject> subclass) { if (subclass == null) { throw new NullPointerException("subclass"); } if (!subclass.isAnnotationPresent(ParseClassName.class)) { throw new UnsupportedOperationException("Class is missing required @ParseClassName annotation: " + subclass.getSimpleName()); } long cls = ObjCClass.getByType(subclass).getHandle(); ObjCRuntime.class_addProtocol(cls, ObjCRuntime.objc_getProtocol(name_PFSubclassing)); long method = VM.getCallbackMethodImpl(cbParseClassName); ObjCRuntime.class_addMethod(ObjCRuntime.object_getClass(cls), sel_parseClassName, method, typeEncodings_parseClassName); ObjCRuntime.void_objc_msgSend(cls, sel_registerSubclass); }
private static void enableListener(long handle) { long releaseListener = ObjCRuntime.objc_getAssociatedObject(handle, RELEASE_LISTENER_CLASS); if (releaseListener == 0) { releaseListener = ObjCRuntime.ptr_objc_msgSend(RELEASE_LISTENER_CLASS, alloc.getHandle()); if (releaseListener == 0L) { throw new OutOfMemoryError(); } releaseListener = ObjCRuntime.ptr_objc_msgSend(releaseListener, init.getHandle()); VM.setPointer(releaseListener + OWNER_IVAR_OFFSET, handle); ObjCRuntime.objc_setAssociatedObject(handle, RELEASE_LISTENER_CLASS, releaseListener, OBJC_ASSOCIATION_RETAIN_NONATOMIC); ObjCRuntime.void_objc_msgSend(releaseListener, release.getHandle()); } }