网上关于 写一个NSString类的实现 是这样的,我觉得这样实现不好

iOS 码拜 10年前 (2015-05-03) 1692次浏览 0个评论
 
+ (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding;


+ (id) stringWithCString: (const char*)nullTerminatedCString 
            encoding: (NSStringEncoding)encoding
{
  NSString  *obj;


  obj = [self allocWithZone: NSDefaultMallocZone()];
  obj = [obj initWithCString: nullTerminatedCString encoding: encoding];
  return AUTORELEASE(obj);
}

网上关于 写一个NSString类的实现 是这样的,我觉得这样实现不好,能给出一种ARC下的实行方式吗?

网上关于 写一个NSString类的实现 是这样的,我觉得这样实现不好
6分
ARC下就交由编译器来进行内存管理,所以你可以直接这样来创建一个字符串

NSString *str = [[NSString alloc] initWithCString: nullTerminatedCString encoding: encoding];
网上关于 写一个NSString类的实现 是这样的,我觉得这样实现不好
6分
这个实现代码里之所以会用到这个宏:AUTORELEASE,就是因为它适配了ARC,如果是ARC的话,这个宏就什么都不会做,反之则调用autorelease
网上关于 写一个NSString类的实现 是这样的,我觉得这样实现不好
4分
它那个AUTORELEASE宏内部应该判断了运行设备是否支持ARC的情况,如果支持不做处理,如果不支持给对象发送autorelease消息
网上关于 写一个NSString类的实现 是这样的,我觉得这样实现不好
引用 3 楼 zhanglei5415 的回复:

它那个AUTORELEASE宏内部应该判断了运行设备是否支持ARC的情况,如果支持不做处理,如果不支持给对象发送autorelease消息

谢谢zhanglei5415和zhanglei5415

我前面说到的问题和答案   我是在这里看到的,http://blog.csdn.net/dayuqi/article/details/8101099
但是我真的看不懂,题目是:
写一个NSString类的实现,但是答案却是  stringWithCString 方法的实现,
这个答案是不是牛头不对马嘴?

如果真有这样一道题,那该如何答呢?

网上关于 写一个NSString类的实现 是这样的,我觉得这样实现不好
谢谢zhanglei5415和zhangao0086,刚才拷贝名字时没有拷贝下来,结果ctrl v两次了,搞重复了,更正下。
网上关于 写一个NSString类的实现 是这样的,我觉得这样实现不好
4分
引用 4 楼 endfun 的回复:
Quote: 引用 3 楼 zhanglei5415 的回复:

它那个AUTORELEASE宏内部应该判断了运行设备是否支持ARC的情况,如果支持不做处理,如果不支持给对象发送autorelease消息

谢谢zhanglei5415和zhanglei5415

我前面说到的问题和答案   我是在这里看到的,http://blog.csdn.net/dayuqi/article/details/8101099
但是我真的看不懂,题目是:
写一个NSString类的实现,但是答案却是  stringWithCString 方法的实现,
这个答案是不是牛头不对马嘴?

如果真有这样一道题,那该如何答呢?

那道题主要考察的是NSString的创建及如何使用类方法构造一个便捷的创建NSString对象的工厂方法。根据要求,参数是一个C字符,而在oc中根据C字符来创建NSString的就只有stringWithCString这个系统提供的函数。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明网上关于 写一个NSString类的实现 是这样的,我觉得这样实现不好
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!