ios異步delegate崩潰

可能看到這個標題有點懵口予,先說說我遇到的情景商玫。

使用AsyncSocket+RPC進行的網(wǎng)絡(luò)通信的數(shù)據(jù)傳遞,AsyncSocket執(zhí)行的結(jié)果是在delegate中進行返回
袍辞,這里面所有的執(zhí)行代碼都被自己封裝到一個類中贸宏。
有時候網(wǎng)絡(luò)環(huán)境特別差的時候造寝。還沒有收到數(shù)據(jù)回掉,我就退回到上一個界面吭练,這時候恰巧數(shù)據(jù)回掉回來了诫龙,但是那個自定義的類已經(jīng)被釋放。就會crash掉鲫咽。(產(chǎn)生野指針)

要解決這個問題其實有兩個思路:
一)由于該類的釋放签赃,造成了野指針谷异,從而導(dǎo)致程序crash掉。那么我自己將這個類的生命周期強行改為從一開始創(chuàng)建直到程序完全退出锦聊,才會釋放歹嘹。那么我就使用單利

#pragma mark public static methods
static LGSocketServe *socketServe = nil;
+ (LGSocketServe *)sharedSocketServe {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        socketServe = [[LGSocketServe alloc] init];
    });    
    return socketServe;
}

二)我們可以使用RunTime進行判斷
添加頭文件

#import <objc/runtime.h>

1)協(xié)議

@property (nonatomic,assign) id<LGSocketServeDelegate> delegate;

2)定義局部變量

    @interface LGSocketServe : NSObject{
        Class     _orignalCls;
      }

3)添加set和get方法

實現(xiàn)協(xié)議的時候,手動去實現(xiàn)方法 設(shè)置局部變量(協(xié)議變量)
    -(void)setDelegate:(id<textDelegate>)delegate{
        del=delegate;
        _orignalCls = object_getClass(del);     
    }

    //獲取局部變量(協(xié)議變量)  的類型
    -(Class)getdelegateClass{
        return  object_getClass(del);
    }

4)調(diào)用的時候孔庭,加上一個判斷尺上,主要就是判斷該該協(xié)議是否被釋放

    if(_orignalCls==[self getdelegateClass])  {
            if([del respondsToSelector:@selector(getname:)]) {
                [del getname:@"1111"];
            }
      }

這個方法適合異步的網(wǎng)絡(luò)請求和一些比較耗時的操作導(dǎo)致delegate崩潰的問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市史飞,隨后出現(xiàn)的幾起案子尖昏,更是在濱河造成了極大的恐慌,老刑警劉巖构资,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異陨簇,居然都是意外死亡吐绵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門河绽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來己单,“玉大人,你說我怎么就攤上這事耙饰∥屏” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵苟跪,是天一觀的道長廷痘。 經(jīng)常有香客問我,道長件已,這世上最難降的妖魔是什么笋额? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮篷扩,結(jié)果婚禮上兄猩,老公的妹妹穿的比我還像新娘。我一直安慰自己鉴未,他們只是感情好枢冤,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铜秆,像睡著了一般淹真。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上羽峰,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天趟咆,我揣著相機與錄音添瓷,去河邊找鬼。 笑死值纱,一個胖子當著我的面吹牛鳞贷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虐唠,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼搀愧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了疆偿?” 一聲冷哼從身側(cè)響起咱筛,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杆故,沒想到半個月后迅箩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡处铛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年饲趋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撤蟆。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡奕塑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出家肯,到底是詐尸還是另有隱情龄砰,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布讨衣,位于F島的核電站换棚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏值依。R本人自食惡果不足惜圃泡,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望愿险。 院中可真熱鬧颇蜡,春花似錦、人聲如沸辆亏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扮叨。三九已至缤弦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彻磁,已是汗流浹背碍沐。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工狸捅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人累提。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓尘喝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親斋陪。 傳聞我的和親對象是個殘疾皇子朽褪,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

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

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 29,340評論 8 265
  • OC語言基礎(chǔ) 1.類與對象 類方法 OC的類方法只有2種:靜態(tài)方法和實例方法兩種 在OC中,只要方法聲明在@int...
    奇異果好補閱讀 4,259評論 0 11
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,135評論 30 470
  • 土豆很喜歡發(fā)小脾氣,像所有戀愛中的姑娘友题。例如嗤堰,昨晚西紅柿沒有說晚安,或者說晚安沒有說我愛你;今天食堂沒有愛吃的菜度宦,...
    dcecd4039fbb閱讀 435評論 0 1
  • 將業(yè)務(wù)分解梁棠,清楚的知道現(xiàn)金流和業(yè)務(wù)之間的關(guān)系,通過波士頓矩陣斗埂,動態(tài)的尋找最佳組合方案,清晰后期的發(fā)力點與發(fā)展方向凫海。
    肉豆須張巍閱讀 297評論 0 0