1. 有沒有想過為什么字符串修飾一般都是用copy 而不是用strong 或者 assgin ? 這些他們有什么區別呢?
? ? 比如: @property (nonatomic, strong/retain/assgin) NSString *strongString;
? ? ? ? ? ? ? ? @property (nonatomic, copy) NSString *copyedString;
將一個不可變的字符串 string? 分別賦值給他們 然后接著更改string 的值?
這時你會發現.雖然更改了string 的值 ?但是 strongString. copyedString 的值沒有發生改變
然后你將一個可變的 string2? 分別賦值給他們 然后接著更改string 的值
這時你會發現.雖然更改了string2 的值? .copyedString 的值沒有發生改變 但是 strongString 發生改變了 這是怎么回事呢?
? 這是因為 你可以分別打印。strongString 和? copyedString 的地址觀察, strongString 和? string2 他們指向的是同一個地址,代表的是同一個對象,你改變其中的任何一個值 ,另一個會跟著發生變化, copyedString 這里做了一次深拷貝 ,棧里有一個新的指針指向堆里一個新的對象,所以你改變string2 的值? copyedString 也所以當我們不希望 NSString * 修飾的對象始終不改變的話用copy 去修飾 如果想讓它改變可以用強引用strong/retain/assgin修飾
注意: 其實將 @property (nonatomic, strong) NSMutableString *strongString;
? ? ? ? ? ? ? ? ? ? ? ? @property (nonatomic, copy) NSMutableString *copyedString;
? ? ? ? ? ? ? ? ? ? ? ? ? 換成可變數據類型結構是一樣的 可以試一下
2. ?什么時候用到layoutSubviews? setNeedsLayout ?
? ? ? ? layoutSubviews? : layoutSubviews 是uiview 的屬性 只要是繼承uiview 都會有這個方法,layoutSubviews對Subviews 的重新布局,默認是不做任何事情的,當我們想更新子試圖的位置的時候 通過layoutSubviews 這個方法? 可以實現對子試圖的重新布局? 那什么情況下會觸發layoutSubviews 呢?
? ? ? ?2.1? init 初始化的時候不會出發 layoutSubviews
? ? ? ?2.2 addSubview? 會出發layoutSubviews?
? ? ? ?2.3 設置Frame 會出發 layoutSubviews 前提 Frame 設置的前后值發生了變化
? ? ? ? 2.4 滾動UIScrollView? 也會觸發 layoutSubviews
? ? ? ? 2.5 旋轉screen 時 會觸發父視圖的layoutSubviews
? ? ? ? 2.6 改變uiview 的大小的時候也會觸發layoutSubviews
? ? ? ?建議: 只在layoutSubviews ?修改布局 不建議寫其他的
3.? awakeFromNib ?
在加載完xib 或者storyboard 之后會調用awakeFromNib 這個方法,那么你可以在這個方法里面去修改子試圖的布局
4. ? 招一個靠譜程序猿 面試題:
這是一個死鎖 只會打印? a ?打印完 a 程序就會crash?
這樣的話打印的是a b c
5. ViewControler 在沒有指向的時候 點擊pop 的時候會走delloc ? 方法 這個控制器會被釋放
6. 換一種風格 采用markdown 的形式重新記錄筆記?
? ? 自己寫的一些筆記二 ?地址: http://www.lxweimin.com/p/17164140e071