search

Home  >  Q&A  >  body text

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

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,单例,观察都模式。 懒加载 也是一种设计模式????!!!

迷茫迷茫2757 days ago785

reply all(2)I'll reply

  • 滿天的星座

    滿天的星座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),就应该在设置新属性值时拷贝一份。

    reply
    0
  • 仅有的幸福

    仅有的幸福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.

    reply
    0
  • Cancelreply