扩展extension 方法的实现在哪里写? objective-c

发布于 2022-09-04 19:45:48 字数 527 浏览 35 评论 0

1.查资料:Extension常被称为是匿名的Category(比如:在字符串中类扩展extension,添加的属性str1和show方法都是私有的,
只能在String类中可以访问得到。
请问:我有个疑问:添加的属性,只能在string类中访问是什么意思?
我写了NSString+test.h 这个扩展。并加上了@property NSString *name这个属性。
在其他地方,我可以:NSString *str1 = @"hello ";
str1.name 可以访问。这算是访问吗?
2.扩展只有一个.h文件。如果我加上了一个方法。这个方法实现在哪个 文件中?

3.深拷贝,浅拷贝。只有不可变对像NSString 的copy是浅拷贝。其他的都 是深拷贝。这些面试题我准备了,都 了解了一下。
我想问,[str1 copy], [mutStr2 mutCopy] 这些有什么用呀?面试的时候问的多,但是实际中好像没怎么用到。
4.iOS设计模式之懒加载。我看到有这样 的介绍。设计模式有代理模式,MVC,单例,观察都模式。 懒加载 也是一种设计模式????!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

和影子一齐双人舞 2022-09-11 19:45:48

category添加属性,是需要实现其getter/setter方法的
扩展只有一个.h文件。如果我加上了一个方法。这个方法实现在哪个 文件中?
实现当然是.m文件

当属性类型为 NSString 时,经常用此特质来保护其封装性,因为传递给设置方法的新值有可能指向一个 NSMutableString 类的实例。这个类是 NSString 的子类,表示一种可修改其值的字符串,此时若是不拷贝字符串,那么设置完属性之后,字符串的值就可能会在对象不知情的情况下遭人更改。所以,这时就要拷贝一份“不可变” (immutable)的字符串,确保对象中的字符串值不会无意间变动。只要实现属性所用的对象是“可变的” (mutable),就应该在设置新属性值时拷贝一份。
我很坚强 2022-09-11 19:45:48

heathWang讲了前三个,我试试答最后一个。诚然,iOS在这方面混淆有点大。如你说的这些,懒加载、观察者、单例、代理是设计模式。而MVC、MVVM这样的叫做框架模式。而AFNetwork、Foundation这样的叫框架

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文