forked from mirrors/linphone-iphone
58 lines
1.9 KiB
Objective-C
58 lines
1.9 KiB
Objective-C
//
|
|
// NSObject+DTRuntime.h
|
|
// DTFoundation
|
|
//
|
|
// Created by Oliver Drobnik on 4/25/12.
|
|
// Copyright (c) 2012 Cocoanetics. All rights reserved.
|
|
//
|
|
|
|
/**
|
|
Methods to dynamically modify objects at runtime
|
|
*/
|
|
|
|
@interface NSObject (DTRuntime)
|
|
|
|
/**-------------------------------------------------------------------------------------
|
|
@name Blocks
|
|
---------------------------------------------------------------------------------------
|
|
*/
|
|
|
|
/**
|
|
Adds a block to be executed as soon as the receiver's memory is deallocated
|
|
@param block The block to execute when the receiver is being deallocated
|
|
*/
|
|
- (void)addDeallocBlock:(void (^)())block;
|
|
|
|
/**
|
|
Adds a new instance method to a class. All instances of this class will have this method.
|
|
|
|
The block captures `self` in the calling context. To allow access to the instance from within the block it is passed as
|
|
parameter to the block.
|
|
@param selectorName The name of the method.
|
|
@param block The block to execute for the instance method, a pointer to the instance is passed as the only parameter.
|
|
@returns `YES` if the operation was successful
|
|
*/
|
|
+ (BOOL)addInstanceMethodWithSelectorName:(NSString *)selectorName block:(void (^)(id))block;
|
|
|
|
/**-------------------------------------------------------------------------------------
|
|
@name Method Swizzling
|
|
---------------------------------------------------------------------------------------
|
|
*/
|
|
|
|
/**
|
|
Exchanges two method implementations. After the call methods to the first selector will now go to the second one and
|
|
vice versa.
|
|
@param selector The first method
|
|
@param otherSelector The second method
|
|
*/
|
|
+ (void)swizzleMethod:(SEL)selector withMethod:(SEL)otherSelector;
|
|
|
|
/**
|
|
Exchanges two class method implementations. After the call methods to the first selector will now go to the second one
|
|
and vice versa.
|
|
@param selector The first method
|
|
@param otherSelector The second method
|
|
*/
|
|
+ (void)swizzleClassMethod:(SEL)selector withMethod:(SEL)otherSelector;
|
|
|
|
@end
|