91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

IOS開發之Target-Action模式有什么用

發布時間:2021-12-24 15:28:56 來源:億速云 閱讀:173 作者:小新 欄目:移動開發

小編給大家分享一下IOS開發之Target-Action模式有什么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

    該模式主要是為了減少模塊之間代碼耦合性,以及增強模塊內代碼之間的內聚性.

讓我們來看看一個實例:

1:假設有這么一個需求:我們點擊一個視圖對象,可以改變該視圖的顏色,這個對于初學者來說是一件非常容易做到的事,只要在這個視圖類中重寫:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event函數,然后改變該視圖的背景色即可,可是這時候又有了新的需求,一部分人需要在點擊該視圖改變該視圖的顏色,一部分人需要在點擊該視圖時改變該視圖的位置,為了讓不同對象執行不同的事件,在實例化該視圖類對象時需要指定該對象感興趣的事件,對于這個需求我們可以通過定義枚舉變量作為該對象的數據成員,并在初始化的時候指定枚舉值(即指定感興趣的事件),同時需要重寫-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event函數,讓它對不同的枚舉值,執行不同的功能,假設這個時候我們又需要在點擊該視圖對象時,執行一個翻轉功能,我們得又去修改該視圖內的具體實現功能,這樣代碼之間的耦合性就比較大,移植起來就很不方便(試想這樣的一個場景,假設別人的app需要你寫好的這個視圖類,但是別人不需要你視圖類中事件方法,則需要修改該視圖類,難免發生一些錯誤),解決這個問題的方法就是Target-Action模式,直接看代碼:

//主視圖頭文件

#import <UIKit/UIKit.h>

@interface MainViewController : UIViewController

@end

//主視圖實現

#import "MainViewController.h"
#import "MyView.h"

@implementation MainViewController

-(id)init
{
    self= [super init];
    if (self)
    {
        
    }
    return self;
}

-(void)viewDidLoad
{
    MyView * view1 = [[MyView alloc]initWithFrame:CGRectMake(10, 20, 100, 100) andTarget:self andAction:@selector(changeColor:)];
    
    [self.view addSubview:view1];
    
    MyView * view2 = [[MyView alloc]initWithFrame:CGRectMake(10, 20, 100, 100) andTarget:self andAction:@selector(moveFrame:)];
    [self.view addSubview:view2];
    
}

-(void)changeColor:(UIView *)aView
{
    NSLog(@"buttonClick");
    int red = arc4random()%255;
    int green = arc4random()%255;
    int blue = arc4random()%255;
    aView.backgroundColor = [UIColor colorWithRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:1.0];
}
-(void)moveFrame:(UIView *)aView
{
    aView.frame = CGRectMake(arc4random()%320, arc4random()%480, 100, 100);
}
@end

//測試視圖類頭文件

#import <UIKit/UIKit.h>

@interface MyView : UIView
{
    id _target;
    SEL _action;
}
-(id)initWithFrame:(CGRect)frame andTarget:(id)target andAction:(SEL)action;
@property (assign,readwrite,nonatomic)id deledate;
@end

////測試視圖類實現

#import "MyView.h"
@implementation MyView

-(id)initWithFrame:(CGRect)frame andTarget:(id)target andAction:(SEL)action
{
    self = [super initWithFrame:frame];
    if (self)
    {
        _target = target;
        _action = action;
    }
    self.backgroundColor = [UIColor blueColor];
    return self;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [_target performSelector:_action withObject:self];
}
@end

看完了這篇文章,相信你對“IOS開發之Target-Action模式有什么用”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

胶州市| 会昌县| 南和县| 胶州市| 尉犁县| 鹤山市| 绥棱县| 高青县| 屏东市| 西和县| 辰溪县| 西丰县| 奈曼旗| 东方市| 尼勒克县| 牡丹江市| 楚雄市| 保德县| 徐州市| 灌阳县| 大名县| 奉贤区| 鹤峰县| 日土县| 嘉峪关市| 黄大仙区| 张家口市| 阜宁县| 郸城县| 五华县| 雷山县| 旬邑县| 康定县| 安乡县| 平阳县| 英超| 渭南市| 寻乌县| 台北市| 鄯善县| 永州市|