ZFFramework
Loading...
Searching...
No Matches
Classes | Macros
ZFObjectAutoPtr.h File Reference

smart pointer for ZFObject More...

#include "ZFObjectRetain.h"
#include "zfauto.h"

Go to the source code of this file.

Classes

class  ZFCorePointerForPoolObject< T_Pointer >
 see ZFCorePointer More...
 
class  ZFCorePointerForZFObject< T_Pointer >
 see ZFCorePointer More...
 
class  zfobj< T_ZFObjectBase >
 util class to alloc and hold ZFObject type More...
 

Macros

#define zflineRelease(obj)
 convenient method to release the object after code line end
 
#define zfunsafe_zflineRelease(obj)
 no lock version of zflineRelease, use with caution
 
#define zflineAlloc(T_ZFObject, ...)
 same as zflineRelease(zfAlloc(...)), see zflineRelease
 
#define zfunsafe_zflineAlloc(T_ZFObject, ...)
 no lock version of zflineAlloc, use with caution
 
#define zfblockedRelease(obj)
 release the object after nearest block
 
#define zfunsafe_zfblockedRelease(obj)
 no lock version of zfblockedRelease, use with caution
 

Detailed Description

smart pointer for ZFObject

Macro Definition Documentation

◆ zflineRelease

#define zflineRelease ( obj)

convenient method to release the object after code line end

usage:

ZFObject *allocObject(void) {
return zfAlloc(ZFObject);
}
ZFArray *array = ...;
array->add( // step 2, array auto retain it, objectRetainCount 2
allocObject() // step 1, objectRetainCount 1
)
); // step 3, zflineRelease auto release it, objectRetainCount 1
// equivalence:
// ZFObject *obj = allocObject();
// array->add(obj);
// zfRelease(obj);
#define zflineRelease(obj)
convenient method to release the object after code line end
Definition ZFObjectAutoPtr.h:89
#define zfAlloc(T_ZFObject,...)
alloc an object, see ZFObject
Definition ZFObjectRetain.h:96
container of ZFObject, see ZFContainer
Definition ZFArray.h:17
virtual void add(zfindex indexAddTo, ZFObject *obj)
insert object at index, assert failure if obj = zfnull or index out of range [0, count]
base class of all objects
Definition ZFObjectCore.h:209

usually, this method is used to save you some code, or designed for chained code

◆ zfblockedRelease

#define zfblockedRelease ( obj)

release the object after nearest block

{ // code block
ZFObject *obj = ...;
zfblockedRelease(obj); // mark release, must be single line
return; // safe to return, auto released after exiting code block
} // obj would be released after here
#define zfblockedRelease(obj)
release the object after nearest block
Definition ZFObjectAutoPtr.h:141