【发布时间】:2011-11-14 12:56:03
【问题描述】:
在 Objective-c 中为原始类型分配内存的最佳做法是什么?
使用 C 分配是好的(malloc 和 free)
unsigned int* val = malloc(sizeof(unsigned int));
free(val);
或者是否有任何 obj-c 特定的分配?
如果一个函数需要一个指向 int 的指针,自己创建和管理指针,或者只是创建一个常规变量并使用 address-of 运算符发送其地址,那么哪个更好:
第一种形式:
NSScanner* scanner = [NSScanner scannerWithString: @"F"];
unsigned int* val = malloc(sizeof(unsigned int));
[scanner scanHexInt: val];
NSLog(@"%d", *val);
free(val);
第二种形式:
NSScanner* scanner = [NSScanner scannerWithString: @"F"];
unsigned int val;
[scanner scanHexInt: &val];
NSLog(@"%d", val);
我自己用第二种形式将自己从 alloc-free 内存头痛中解脱出来。
【问题讨论】:
标签: objective-c memory-management