- 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/
我最近将我的 Xcode 从 Xcode 7 beta 4 更新到 Xcode 7 beta 5 并开始出现以前不存在的错误。那就是:“AllocWithZone 在 Swift 中不可用:改用对象初
BNRItemStore 是一个单例,我很困惑为什么必须调用 super allocWithZone: 而不是普通的旧 super alloc。然后覆盖 alloc 而不是 allocWithZone
我是 Objective-C 的新手,我正在尝试基于 Apple's documentation 创建一个单例类. + (MyGizmoClass*)sharedManager { if (s
我见过一些类似于这个的 SO 问题,但它们都涉及单例,答案都是(正确地)“不要那样做,改用 dispatch_once()”。 在我的特定实例中,我没有制作单例,我需要父类(super class)的
来自 forum discussion ,似乎最大的区别是性能因素, allocWithZone: 将从特定内存区域分配内存,从而降低交换成本。 在实践中,几乎没有机会使用 allocWithZone
e. (只是为了更清楚地理解消息机制)我有课 我的类.h @interface MyClass : NSObject { int ivar1; int ivar2; } + (id)ins
我想知道,Objective C 对象究竟是如何创建的。我一直在阅读不同的博客文章和苹果文档,但我只能在这里和那里找到关于 ivar 和 objc_class 结构以及各种其他运行时方法和结构的不完整
抱歉描述太长,但是问题并不那么容易...... 我的项目是在没有 GC 的情况下编写的。最近发现内存泄漏,找不到。我确实使用了新的 Xcode 分析器,但没有结果。我确实逐行阅读了我的代码并验证了所有
我对“如何实现initWithCString:(const char *)nullTerminatedCString”这个问题有疑问 我搜索了很多这个问题的答案。他们中的大多数人使用 allocWit
我最近刚刚将我的项目升级到带有 ARC(自动引用计数)的 iOS 5,现在我在后台暂停应用程序后,Instruments 报告 NSAutoreleasePool 内存泄漏。 根据这两个 API 调用
我是一名优秀的程序员,十分优秀!