iOS小問題(三)

隨手記幾個最近碰到的小問題

tips:如果有錯誤棵譬,或者有更好的詳細(xì)解答嫂侍,請隨時聯(lián)系我進(jìn)行修改沾谓。

1.UITextField輸入卡住殴胧,字符不向左移動

發(fā)現(xiàn)UITextField在輸入滿以后渗稍,光標(biāo)和輸入位置卡住不動,內(nèi)容text還在增加团滥,但不會往左移竿屹。查了內(nèi)部的UIFieldEditorContentView一切正常,無法理解灸姊。
后來發(fā)現(xiàn)是UITextField的輸入框高度小了拱燃,比如字體18,高度20的情況力惯,把高度改為24就正常了碗誉。

2.實(shí)現(xiàn)單例的方式

iOS常見的實(shí)現(xiàn)單例方式目前有三種
1.initialize
2.加鎖
3.GCD dispatch_once
注意的是,要防止直接alloc(new)創(chuàng)建對象的方式父晶,所以要重寫一些方法哮缺,拿GCD來舉例

#import "SingleInstance.h"

@interface SingleInstance ()<NSCopying,NSMutableCopying>

@end

//定義一個當(dāng)前單例對象的一個實(shí)例,并賦值為nil
static SingleInstance *instance = nil;

@implementation SingleInstance
+ (instancetype)sharedInstance
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc] init];
    });

    return instance;
}

//alloc會觸發(fā)甲喝,防止通過alloc創(chuàng)建一個不同的實(shí)例
+ (instancetype)allocWithZone:(struct _NSZone *)zone
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [super allocWithZone:zone];
    });
    
    return instance;
}

- (id)copyWithZone:(nullable NSZone *)zone
{
    return self;
}

- (id)mutableCopyWithZone:(nullable NSZone *)zone
{
    return self;
}

//手動內(nèi)存管理下寫這些

- (instancetype)retain
{
    return self;
}

- (oneway void)release
{
    
}

- (instancetype)autorelease
{
    return self;
}

- (NSUInteger)retainCount
{
    return MAXFLOAT;
}

- (void)dealloc
{
}

3.查詢crash log的uuid

每一個可執(zhí)行程序都有一個build UUID來唯一標(biāo)識尝苇。Crash日志包含發(fā)生crash的這個應(yīng)用(app)的 build UUID以及crash發(fā)生的時候,應(yīng)用加載的所有庫文件的[build UUID]。

查詢crash log的uuid可以用:grep "appName armv" *crash
或者grep --after-context=2 "Binary Images:" *crash
可以得到類似如下的結(jié)果:

appName.crash-0x4000 - 0x9e7fff appName armv7 <8bdeaf1a0b233ac199728c2a0ebb4165> 
/var/mobile/Applications/A0F8AB29-35D1-4E6E-84E2-954DE7D21CA1/appName.crash.app/appName

(請注意這里的0x4000茎匠,是模塊的加載地址格仲,后面用atos的時候會用到)

查詢app的uuid可以使用命令:xcrun dwarfdump -–uuid <AppName.app/ExecutableName>
比如:xcrun dwarfdump --uuid appName.app/appName
結(jié)果如下:

UUID: 8BDEAF1A-0B23-3AC1-9972-8C2A0EBB4165 (armv7) appName.app/appName
UUID: 5EA16BAC-BB52-3519-B218-342455A52E11 (armv7s) appName.app/appName

這個app有2個UUID,表明它是一個fat binnary诵冒。
它能利用最新硬件的特性凯肋,又能兼容老版本的設(shè)備。
對比上面crash文件和app文件的UUID汽馋,發(fā)現(xiàn)它們是匹配的
8BDEAF1A-0B23-3AC1-9972-8C2A0EBB4165

至于如何查crash更多的內(nèi)容侮东,可以參考參考資料。

4.NSTimer的持有對象問題

NSTimer使用容易有兩大問題

  1. 持有target(target再持有NSTimer就是引用循環(huán)豹芯,就算不持有悄雅,也釋放不了)
  2. RunloopMode的設(shè)置

這里主要說說怎么解決被持有的問題。
目前解決NSTimer的持有有兩種方式

  1. block方法
  2. proxy代理方法

iOS10特別新增了block的支持方式铁蹈,去解決被持有的問題宽闲。
其實(shí)這兩種方式本身都是一樣,就是修改NSTimer持有的target對象握牧,讓需要釋放的對象不被持有容诬,就可以在dealloc中去invalidate timer。
具體實(shí)現(xiàn)可以參考參考資料沿腰,這里不詳細(xì)說了览徒。

參考資料

CSDN地址
1.iOS崩潰crash大解析
2.分析iOS Crash文件:符號化iOS Crash文件的3種方法
3.NSTimer和實(shí)現(xiàn)弱引用的timer的方式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市颂龙,隨后出現(xiàn)的幾起案子习蓬,更是在濱河造成了極大的恐慌,老刑警劉巖措嵌,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件能真,死亡現(xiàn)場離奇詭異忌锯,居然都是意外死亡延蟹,警方通過查閱死者的電腦和手機(jī)每辟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來包斑,“玉大人,你說我怎么就攤上這事涕俗÷薹幔” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵再姑,是天一觀的道長萌抵。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么绍填? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任霎桅,我火速辦了婚禮,結(jié)果婚禮上讨永,老公的妹妹穿的比我還像新娘滔驶。我一直安慰自己,他們只是感情好卿闹,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布揭糕。 她就那樣靜靜地躺著,像睡著了一般锻霎。 火紅的嫁衣襯著肌膚如雪著角。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天旋恼,我揣著相機(jī)與錄音吏口,去河邊找鬼。 笑死冰更,一個胖子當(dāng)著我的面吹牛产徊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冬殃,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼囚痴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了审葬?” 一聲冷哼從身側(cè)響起深滚,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涣觉,沒想到半個月后痴荐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡官册,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年生兆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膝宁。...
    茶點(diǎn)故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸦难,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出员淫,到底是詐尸還是另有隱情合蔽,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布介返,位于F島的核電站拴事,受9級特大地震影響沃斤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刃宵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一衡瓶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧牲证,春花似錦哮针、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至键闺,卻和暖如春寿烟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辛燥。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工筛武, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挎塌。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓徘六,卻偏偏與公主長得像,于是被迫代替她去往敵國和親榴都。 傳聞我的和親對象是個殘疾皇子待锈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容