Ser*_*hii 5 memory-management objective-c ios
如何使用我的自定义分配器为所有 Objective-C类正确替换标准/默认内存分配器(不仅适用于我自己的类)?
这不是我的第一需要,更像是我对此感到好奇.现在我最终得到了解决方案,这似乎是有效的,但它是非常不安全的:
@interface NSObject(Allocator)
+ (instancetype)allocWithZone:(_NSZone*)zone;
@end
@implementation NSObject(Allocator)
+ (instancetype)allocWithZone:(_NSZone*)zone
{
(void)zone;
size_t sizeToAlloc = class_getInstanceSize([self class]);
void* allocatedMemory = getSharedObjCAllocator().alloc(sizeToAlloc);
memset(allocatedMemory, 0, sizeToAlloc);
id resultObject = objc_constructInstance([self class], allocatedMemory);
return resultObject;
}
- (void)dealloc
{
objc_destructInstance(self);
if (getSharedObjCAllocator().validatePointer(self, false))
{
getSharedObjCAllocator().free(self);
}
else
{
::free(self);
}
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |