iOS 消除 NSNull 引起的 crash 和 手勢綁定block 的分類

1. 消除NSNull引起的crash

OC中給null發(fā)消息是會導(dǎo)致crash, 為了避免這個(gè)可以
給 NSNull 添加分類 NSNull+YFAdd.h 直接放到項(xiàng)目里就行了.

. m 實(shí)現(xiàn)代碼如下:

- (void)forwardInvocation:(NSInvocation *)invocation {
    if ([self respondsToSelector:[invocation selector]]) {
        [invocation invokeWithTarget:self];
    }
}
- (NSMethodSignature *)methodSignatureForSelector:(SEL)selector {
    NSMethodSignature *sig = [[NSNull class] instanceMethodSignatureForSelector:selector];
    if(sig == nil) {
        sig = [NSMethodSignature signatureWithObjCTypes:"@^v^c"];
    }
    return sig;
}

2. 手勢綁定block


UIGestureRecognizer+Block

[self.view addGestureRecognizer:[UITapGestureRecognizer gestureRecognizerWithBlock:^(id gestureRecognizer) {
  //...這里面寫代碼, 不用@(selector)
}]];

.m 代碼如下

#import "UIGestureRecognizer+Block.h"

static const int AssociatedTarget_key;

@implementation UIGestureRecognizer (Block)

+ (instancetype)yf_gestureRecognizerWithBlock:(YFGestureBlock)block {
    return [[self alloc] initWithBlock:block];
}

- (instancetype)initWithBlock:(YFGestureBlock)block {
    self = [self init];
    [self addBlock:block];
    [self addTarget:self action:@selector(invoke:)];
    return self;
}

- (void)addBlock:(YFGestureBlock)block {
    if (block) {
        objc_setAssociatedObject(self, &AssociatedTarget_key, block, OBJC_ASSOCIATION_COPY_NONATOMIC);
    }
}

- (void)invoke:(id)sender {
    YFGestureBlock block = objc_getAssociatedObject(self, &AssociatedTarget_key);
    if (block) {
        block(sender);
    }
}

@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末称杨,一起剝皮案震驚了整個(gè)濱河市寇甸,隨后出現(xiàn)的幾起案子限府,更是在濱河造成了極大的恐慌锚贱,老刑警劉巖档痪,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)攘乒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惋鹅,“玉大人则酝,你說我怎么就攤上這事∪蚣” “怎么了堤魁?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長返十。 經(jīng)常有香客問我,道長椭微,這世上最難降的妖魔是什么洞坑? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮蝇率,結(jié)果婚禮上迟杂,老公的妹妹穿的比我還像新娘。我一直安慰自己本慕,他們只是感情好排拷,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锅尘,像睡著了一般监氢。 火紅的嫁衣襯著肌膚如雪布蔗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天浪腐,我揣著相機(jī)與錄音纵揍,去河邊找鬼。 笑死议街,一個(gè)胖子當(dāng)著我的面吹牛泽谨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播特漩,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼吧雹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了涂身?” 一聲冷哼從身側(cè)響起雄卷,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎访得,沒想到半個(gè)月后龙亲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悍抑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年鳄炉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搜骡。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拂盯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出记靡,到底是詐尸還是另有隱情谈竿,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布摸吠,位于F島的核電站空凸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏寸痢。R本人自食惡果不足惜呀洲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啼止。 院中可真熱鬧道逗,春花似錦、人聲如沸献烦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巩那。三九已至吏夯,卻和暖如春此蜈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锦亦。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工舶替, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人杠园。 一個(gè)月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓顾瞪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抛蚁。 傳聞我的和親對象是個(gè)殘疾皇子陈醒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

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

  • Swift版本點(diǎn)擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,333評論 7 249
  • 在外面吃飯肚逸,鄰桌一個(gè)姑娘爷辙,對面一男一女,男的說朦促,你辦張信用卡吧膝晾,我給你發(fā)個(gè)紅包,之后的對話务冕,姑娘問血当,卡可以取現(xiàn)嗎?...
    小銀杏閱讀 178評論 0 0
  • 今天專欄中說道: 重復(fù)禀忆,是從笨拙達(dá)到熟練境界的唯一通路臊旭。 賣油翁所說的“我亦無他, 唯手熟爾”,用今天的神經(jīng)科學(xué)術(shù)...
    妄_念閱讀 326評論 0 0
  • 一不小心愛上了畫 一不小心畫了幅畫 后來 畫里裝滿了我的愛 筆尖抒寫了我的情 一天一天 一年一年 我長大了 畫筆短...
    多多兒閱讀 457評論 5 13