1. Check the information: Extension is often called an anonymous Category (for example: in the string class extension extension, the added attributes str1 and show method are private,
can only be used in the String class Accessible.
Excuse me: I have a question: What does it mean that the added attributes can only be accessed in the string class?
I wrote the NSString test.h extension and added @property. NSString *name attribute.
In other places, I can access: NSString *str1 = @"hello ";
str1.name. Is this considered access?
2. The extension only has one .h file. . If I add a method. In which file is this method implemented?
I would like to ask, what are the uses of [str1 copy], [mutStr2 mutCopy]? I ask a lot of questions during interviews, but they don’t seem to be used much in practice.
4. Lazy loading of iOS design patterns. I saw such an introduction. Design patterns include proxy pattern, MVC, singleton, and observation patterns. Is lazy loading also a design pattern? ? ? ? ! ! !
業(yè)精于勤,荒于嬉;行成于思,毀于隨。
To add attributes to category, you need to implement its getter/setter methods擴展只有一個.h文件。如果我加上了一個方法。這個方法實現(xiàn)在哪個 文件中?
The implementation is of course an .m file
當(dāng)屬性類型為 NSString 時,經(jīng)常用此特質(zhì)來保護其封裝性,因為傳遞給設(shè)置方法的新值有可能指向一個 NSMutableString 類的實例。這個類是 NSString 的子類,表示一種可修改其值的字符串,此時若是不拷貝字符串,那么設(shè)置完屬性之后,字符串的值就可能會在對象不知情的情況下遭人更改。所以,這時就要拷貝一份“不可變” (immutable)的字符串,確保對象中的字符串值不會無意間變動。只要實現(xiàn)屬性所用的對象是“可變的” (mutable),就應(yīng)該在設(shè)置新屬性值時拷貝一份。
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.