您的位置:首页 > 移动开发 > IOS开发

ios 中代理原理使用方法精讲

2014-09-09 22:12 375 查看

IOS中delegate的使用方法


写了一个简单的委托的试用测试:


首先创建FunctionTest类,声明委托:


FunctionTest.h

[java] view plaincopyprint?

//

// FunctionTest.h

// DelegateDemo

//

// Created by shx on 12-7-17.

// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.

//

#import <Foundation/Foundation.h>

@protocol FunctionTestDelegate;

@interface FunctionTest : NSObject

{

id<FunctionTestDelegate> delegate;

}

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

- (void)func1;

- (void)func2;

@end

@protocol FunctionTestDelegate <NSObject>

- (void)func3;

- (void)func4;

@end



FunctionTest.m

[java] view plaincopyprint?

//

// FunctionTest.m

// DelegateDemo

//

// Created by shx on 12-7-17.

// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.

//

#import "FunctionTest.h"

@implementation FunctionTest

@synthesize delegate;

- (void)func1

{

NSLog(@"function 1 called

");

[delegate performSelector:@selector(func3)];

}

- (void)func2

{

NSLog(@"function 2 called

");

[delegate performSelector:@selector(func4)];

}

@end



在appdelegate中实现委托:

[java] view plaincopyprint?

//

// AppDelegate.h

// DelegateDemo

//

// Created by shx on 12-7-17.

// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.

//

#import <UIKit/UIKit.h>

#import "FunctionTest.h"

@class ViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate,FunctionTestDelegate>

{

FunctionTest *test;

}

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) ViewController *viewController;

@end

AppDelegate.m中实现:

[java] view plaincopyprint?

#pragma mark -FunctionTestDelegate

- (void)func3

{

NSLog(@"function 3 called

ns");

}

- (void)func4

{

NSLog(@"function 4 called

ns");

}





- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

调用添加:

[java] view plaincopyprint?

test = [[FunctionTest alloc]init];

test.delegate = self;

[test func1];

[test func2];

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: