作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对“如何实现initWithCString:(const char *)nullTerminatedCString”这个问题有疑问
我搜索了很多这个问题的答案。他们中的大多数人使用 allocWithZone 而不是 alloc,但据我所知,NSZone 由于某种原因被苹果放弃了。大多数人编写代码来实现这种方法是这样的:
+ (id) stringWithCString: (const char*)nullTerminatedCString
encoding: (NSStringEncoding)encoding
{
NSString *obj;
obj = [self allocWithZone: NSDefaultMallocZone()];
obj = [obj initWithCString: nullTerminatedCString encoding: encoding];
return AUTORELEASE(obj);
}
我不明白他们为什么不这样写:
+ (id) stringWithCString: (const char*)nullTerminatedCString
encoding: (NSStringEncoding)encoding
{
NSString *obj;
obj = [self alloc];
obj = [obj initWithCString: nullTerminatedCString encoding: encoding];
return AUTORELEASE(obj);
}
我的方法有什么问题吗,谁能告诉我?
最佳答案
That method already exists as part of the SDK on NSString ,所以我不确定你为什么要实现它。话虽如此,您上面提供的两种实现是等效的。 As noted in the documentation , alloc
实际上调用了 allocWithZone:
。
The documentation for allocWithZone:
还表明 alloc
可能是首选。它指出:
This method exists for historical reasons; memory zones are no longer used by Objective-C.
关于ios - 如何实现 initWithCString :(const char *)nullTerminatedCString ? 为什么大多数人使用 allocWithZone 而不是 alloc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33093409/
我对“如何实现initWithCString:(const char *)nullTerminatedCString”这个问题有疑问 我搜索了很多这个问题的答案。他们中的大多数人使用 allocWit
我是一名优秀的程序员,十分优秀!