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,单例,观察都模式。 懒加载 也是一种设计模式????!!!
滿天的星座2017-05-02 09:40:18
To add attributes to category, you need to implement its getter/setter methods扩展只有一个.h文件。如果我加上了一个方法。这个方法实现在哪个 文件中?
The implementation is of course an .m file
当属性类型为 NSString 时,经常用此特质来保护其封装性,因为传递给设置方法的新值有可能指向一个 NSMutableString 类的实例。这个类是 NSString 的子类,表示一种可修改其值的字符串,此时若是不拷贝字符串,那么设置完属性之后,字符串的值就可能会在对象不知情的情况下遭人更改。所以,这时就要拷贝一份“不可变” (immutable)的字符串,确保对象中的字符串值不会无意间变动。只要实现属性所用的对象是“可变的” (mutable),就应该在设置新属性值时拷贝一份。
仅有的幸福2017-05-02 09:40:18
heathWang talked about the first three, I will try to answer the last one. Granted, iOS is a bit confusing in this regard. As you said, lazy loading, observers, singletons, and proxies are design patterns. MVC and MVVM are called framework patterns. AFNetwork and Foundation are called frameworks.