mirror of
https://github.com/wu736139669/Ash_AWord.git
synced 2026-08-06 06:15:20 +00:00
114 lines
3.0 KiB
Objective-C
114 lines
3.0 KiB
Objective-C
//
|
|
// EXTRuntimeExtensions.h
|
|
// extobjc
|
|
//
|
|
// Created by Justin Spahr-Summers on 2011-03-05.
|
|
// Copyright (C) 2012 Justin Spahr-Summers.
|
|
// Released under the MIT license.
|
|
//
|
|
|
|
#import <objc/runtime.h>
|
|
|
|
/**
|
|
* Describes the memory management policy of a property.
|
|
*/
|
|
typedef enum {
|
|
/**
|
|
* The value is assigned.
|
|
*/
|
|
mtl_propertyMemoryManagementPolicyAssign = 0,
|
|
|
|
/**
|
|
* The value is retained.
|
|
*/
|
|
mtl_propertyMemoryManagementPolicyRetain,
|
|
|
|
/**
|
|
* The value is copied.
|
|
*/
|
|
mtl_propertyMemoryManagementPolicyCopy
|
|
} mtl_propertyMemoryManagementPolicy;
|
|
|
|
/**
|
|
* Describes the attributes and type information of a property.
|
|
*/
|
|
typedef struct {
|
|
/**
|
|
* Whether this property was declared with the \c readonly attribute.
|
|
*/
|
|
BOOL readonly;
|
|
|
|
/**
|
|
* Whether this property was declared with the \c nonatomic attribute.
|
|
*/
|
|
BOOL nonatomic;
|
|
|
|
/**
|
|
* Whether the property is a weak reference.
|
|
*/
|
|
BOOL weak;
|
|
|
|
/**
|
|
* Whether the property is eligible for garbage collection.
|
|
*/
|
|
BOOL canBeCollected;
|
|
|
|
/**
|
|
* Whether this property is defined with \c \@dynamic.
|
|
*/
|
|
BOOL dynamic;
|
|
|
|
/**
|
|
* The memory management policy for this property. This will always be
|
|
* #mtl_propertyMemoryManagementPolicyAssign if #readonly is \c YES.
|
|
*/
|
|
mtl_propertyMemoryManagementPolicy memoryManagementPolicy;
|
|
|
|
/**
|
|
* The selector for the getter of this property. This will reflect any
|
|
* custom \c getter= attribute provided in the property declaration, or the
|
|
* inferred getter name otherwise.
|
|
*/
|
|
SEL getter;
|
|
|
|
/**
|
|
* The selector for the setter of this property. This will reflect any
|
|
* custom \c setter= attribute provided in the property declaration, or the
|
|
* inferred setter name otherwise.
|
|
*
|
|
* @note If #readonly is \c YES, this value will represent what the setter
|
|
* \e would be, if the property were writable.
|
|
*/
|
|
SEL setter;
|
|
|
|
/**
|
|
* The backing instance variable for this property, or \c NULL if \c
|
|
* \c @synthesize was not used, and therefore no instance variable exists. This
|
|
* would also be the case if the property is implemented dynamically.
|
|
*/
|
|
const char *ivar;
|
|
|
|
/**
|
|
* If this property is defined as being an instance of a specific class,
|
|
* this will be the class object representing it.
|
|
*
|
|
* This will be \c nil if the property was defined as type \c id, if the
|
|
* property is not of an object type, or if the class could not be found at
|
|
* runtime.
|
|
*/
|
|
Class objectClass;
|
|
|
|
/**
|
|
* The type encoding for the value of this property. This is the type as it
|
|
* would be returned by the \c \@encode() directive.
|
|
*/
|
|
char type[];
|
|
} mtl_propertyAttributes;
|
|
|
|
/**
|
|
* Returns a pointer to a structure containing information about \a property.
|
|
* You must \c free() the returned pointer. Returns \c NULL if there is an error
|
|
* obtaining information from \a property.
|
|
*/
|
|
mtl_propertyAttributes *mtl_copyPropertyAttributes (objc_property_t property);
|