中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iPhone How-to:靜態庫中使用Category

發布時間:2020-06-17 08:46:00 來源:網絡 閱讀:1424 作者:benjielin 欄目:開發技術

   在iPhone開發中,Category是廣泛使用的一種Objective-C的特性,不過如果在靜態庫中如果使用Category就會遇到一些意外的崩潰,原因就是在使用靜態庫的應用中會無法發現庫中Category的聲明。對此stack overflow上也有專門的討論,并提示說要使用-all_load的編譯選項。不過在我實際的項目開發中卻這種方法卻無法解決問題。經過一番調查和嘗試,最終采用的解決辦法就是創建一個冗余類,然后將所有的Category都放在該類的文件中,這樣在無需實例化冗余類的情況就可以騙過編譯器,從而解決了在靜態庫中使用Category會引發的崩潰問題。

CategoryDummy.h文件如下:

@interface CategoryDummy : NSObject {

}

@end

@interface UIButton(Addition)

- (void) addClickHandler:(SEL)onClick forTarget:(id)target;
- (void) setClickHandler:(SEL)onClick forTarget:(id)target;
- (void) setTitle: (NSString*)title;

@end

@interface UIColor (Addition)

+ (UIColor*) colorWithRGB:(Byte)red green:(Byte)green blue:(Byte)blue;

@end

 

CategoryDummy.m文件如下:

#import "CategoryDummy.h"

@implementation CategoryDummy

@end

@implementation UIButton(Addition)

- (void)addClickHandler:(SEL)onClickSel forTarget:(id)target {
    [self addTarget:target action:onClickSel forControlEvents:UIControlEventTouchUpInside];
}

- (void)setClickHandler:(SEL)onClickSel forTarget:(id)target {
    [self removeTarget:target action:NULL forControlEvents:UIControlEventTouchUpInside];
    [self addTarget:target action:onClickSel forControlEvents:UIControlEventTouchUpInside];
}

- (void) setTitle: (NSString*)title {
    [self setTitle:title forState:UIControlStateNormal];
    [self setTitle:title forState:UIControlStateSelected];
    [self setTitle:title forState:UIControlStateHighlighted];
    [self setTitle:title forState:UIControlStateDisabled];
}

@end

@implementation UIColor (Addition)

+ (UIColor*) colorWithRGB:(Byte)red green:(Byte)green blue:(Byte)blue {
    CGFloat fRed = red / 255.0f;
    CGFloat fGreen = green / 255.0f;
    CGFloat fBlue = blue / 255.0f;
    return [UIColor colorWithRed:fRed green:fGreen blue:fBlue alpha:1.0f];
}

@end

  問題是解決了,副作用就是由于所有的Category都和冗余類在同一文件內聲明和實現,導致使用某個Category的時候就需要導入CategoryDummy.h文件,也就意味著導入了所有的Category。Category的文件結構和引入都不單純。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汨罗市| 建水县| 壤塘县| 钟祥市| 万源市| 繁昌县| 永登县| 建水县| 贵溪市| 涿州市| 琼海市| 蚌埠市| 抚宁县| 岑溪市| 霸州市| 高邮市| 高要市| 双柏县| 紫阳县| 凤城市| 上栗县| 邹城市| 凤凰县| 波密县| 资讯| 时尚| 易门县| 阳春市| 安义县| 潞城市| 安龙县| 二连浩特市| 兴山县| 门源| 阿拉善盟| 临朐县| 元江| 瑞安市| 嘉义市| 淮阳县| 西乌|