最近遇到的問題有兩個:
1,在做小車快跑的時候,想時刻定位司機汽車票在地圖的位置,因為我選擇自定義了結構體,開了一個timer定時去輪詢拿司機經緯度,可是發現內存一致在增加,降不下來,剛好遇到了手白的架構師8哥到上海技術分享,于是跪求抱大腿求看代碼求降低內存,最后發現,原來是自己定義的結構體使用錯誤,我把自定義的結構體當作OC對象中的屬性去使用:
屏幕快照 2016-03-25 下午11.12.54.png
這塊導致我在開線程不斷重復輪訓的時候一直增加內存。
。雖然說Xcode4.2之后提供了Automatic Reference Counting,但是身邊的IOS Coder都告訴我說不要使用這個,因為效率比較低。
然后據我現在的理解,有兩種對象需要手動釋放,即alloc創建的和new出來的。而基本數據類型和CGPoint(結構體),BOOL(算基本數據類型),還有寫在
@interface{}大括號里的也是不需要手動釋放的。
說的簡單點,只有h文件中@property的和m文件中alloc & new的對象需要釋放。
需要釋放的對象在viewDidUnload中要先制為Nil,最后需要在dealloc中release。所有的頁面硬引用如UITextView都需要做這樣的操作,除了頁面硬引用之外的對象創建、賦值、使用完后就必須立即釋放。
2.還有一個問題就是比對當前時間戳的問題。
我一直覺得都是秒數,直接轉化成秒數比大小不就行了么=。=
可是后來查了一下NSDate還是有對比時間時間戳類型的API
日期之間比較可用以下方法
- (BOOL)isEqualToDate:(NSDate *)otherDate;
與otherDate比較,相同返回YES - (NSDate *)earlierDate:(NSDate *)anotherDate;
與anotherDate比較,返回較早的那個日期 - (NSDate *)laterDate:(NSDate *)anotherDate;
與anotherDate比較,返回較晚的那個日期 - (NSComparisonResult)compare:(NSDate *)other;
該方法用于排序時調用:
. 當實例保存的日期值與anotherDate相同時返回NSOrderedSame
. 當實例保存的日期值晚于anotherDate時返回NSOrderedDescending
. 當實例保存的日期值早于anotherDate時返回NSOrderedAscending