把内部的状态通知给外界,我们可以制定一个变量,然后这个变量从外界来指定,之后我们可以通过变量去通知给外界有什么发生了。

按照上文讲的到新建一个protocol,名字为IPeople

#import <Foundation/Foundation.h>

//oc里面的协议相当于java里面的接口
@protocol IPeople <NSObject> -(int)getAge;
-(void)setAge:(int)age; -(NSString*)getName; @end

新建一个类文件

Man.h

#import <Foundation/Foundation.h>
#import "IPeople.h"
#import "ManDelegate.h" @interface Man : NSObject<IPeople> //可以写入多个接口,以逗号(,)隔开
{
int _age;
}
-(id)init; -(int)getAge;
-(void)setAge:(int)age; -(NSString*)getName; @property id<ManDelegate> delegate; @end

Man.m

#import "Man.h"

@implementation Man:NSObject

- (instancetype)init
{
self = [super init];//相当于java里面的this
if (self) {
self.delegate=nil;
}
return self;
} -(int)getAge{
return _age;
} -(void)setAge:(int)age{
if(age!=_age){ //当age值发生变化时代理执行类
if(self.delegate){
[self.delegate onAgeChange:age];
}
}
_age=age;
} -(NSString*)getName{
return @"Netcorner";
} @end

新建一个delegate类协议

#import <Foundation/Foundation.h>

@protocol ManDelegate <NSObject>
-(void)onAgeChange:(int)age;
@end

主程序为:

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "Man.h"
#import "ManDelegate.h"
//实现delegate协议的类
@interface ManListener : NSObject<ManDelegate>
-(void)onAgeChange:(int)age;
@end @implementation ManListener -(void)onAgeChange:(int)age{
NSLog(@"Age Changed,Current age is %d",age);
}
@end int main(int argc, char * argv[]) { Man *m=[[Man alloc]init ];
[m setDelegate:[[ManListener alloc]init]];
[m setAge:]; }

oc Delegate的更多相关文章

  1. [OC] Delegate的使用

    建立两个页面 A 和 B,我们假设他们的文件名为ControllerA,ControllerB 由A页面,点击跳转到B页面.在B页面中,进行一些操作,并得到一个值,并将这个值传回给A页面,并在A页面上 ...

  2. 在OC中调用Swift类中定义delegate出现:Property 'delegate' not found on object of type ...

    找了许久没找到答案, 在下面的链接中, 我解决了这个问题: http://stackoverflow.com/questions/26366082/cannot-access-property-of- ...

  3. 从OC和C#中找乐趣:相同又不同的delegate

    不想说话,本来第一段打了一大堆废话,结果浏览器崩溃了...直接进入正题吧.看Demo: C#里面也有delegate,我今天的目的就是模仿着OC里面的写法来写一个网络请求模拟类.先建一个“Protoc ...

  4. OC语言-block and delegate

    参考博客 OC语言BLOCK和协议 iOS Block iOS Block循环引用精讲 iOS之轻松上手block 深入浅出Block的方方面面 Block apple官方参考 1.定义一个block ...

  5. OC中APPDelegate[[UIApplication shareApplication]delegate]]Swift实现

    直接上代码: var myDelegate:AppDelegate? myDelegate = UIApplication.sharedApplication().delegate as? AppDe ...

  6. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  7. iOS开发--JS调用原生OC篇

    JS调用原生OC篇 方式一(反正我不用) 第一种方式是用JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理. 我写了一个简单的HTML网页和一个btn点击 ...

  8. OC编程之道-接口适配之适配器

    已有的类与新的接口之间不兼容的问题相当普遍,人们已为它找到了一个解决方案.这个解决方案就是适配器. 1 何为适配器 what 适配器的主要作用是把被适配者的行为传递给管道另一端的客户端. 将一个类的接 ...

  9. JS代码和OC代码的相互调用

    JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC.....举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现. OC调用JS 还是举个例子,我 ...

随机推荐

  1. Android高效加载大图、多图解决方案,有效避免程序内存溢出现象

    好久没有写博客了,今天就先写一个小的关于在Android中加载大图如何避免内存溢出的问题. 后面会写如何使用缓存技术的核心类,android.support.v4.util.LruCache来加载图片 ...

  2. go语言基础之不要操作没有合法指向的内存

    1.不要操作没有合法指向的内存 示例: package main //必须有个main包 import "fmt" func main() { //没有指向内存 var p *in ...

  3. C#异常处理及心得

    C sharp中的异常用于处理系统级和应用程序级的错误状态,它是一种结构化.统一的类型安全的处理机制.c#的异常 机制非常类似于c++的异常处理机制,但是还是有一些重要的区别: 1,在 C# 中,所有 ...

  4. python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 30: illegal multibyte sequence

    昨天用用python3写个日志文件,结果报错UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 30: ...

  5. Android -- ViewPager放入多个XML监听每个的控件

    我这这里就用了两个imageButton的监听器,两个XML上分别一个. 昨天做了个Viewpager,今天想试试在上面弄上Button试试,结果,弄不来,然后查文档,没查到...百度了1个多小时才出 ...

  6. 【java】jvm查看当前虚拟机堆大小限制

    #############################################################jinfo -flag MaxHeapSize 6461#linux: jav ...

  7. xshell实现端口转发

    跳板机:10.127.10.1 目标机:10.127.4.25:8080 目的:出于安全,本地电脑是与远程服务器是网关不通的,为了能访问远程服务器数据必须做端口转发 SSH连接与身份认证为跳板机账号密 ...

  8. linux系统下调度数据库类型资源库中的kettle job

    已经存在kettle的一个资源库enfo,在目录/works/wxj下面有一个job (testmailsuccess.kjb)如何实现手工在kettle外部执行此job和让系统每天定时的调用此job ...

  9. java oracle thin 和 oci 连接方式实现多数据库的故障切换

    java oracle thin 和 oci 连接方式实现多数据库的故障切换 一.thin方式 该种方式简便易用非经常见. 当中URL为 jdbc:oracle:thin:@(DESCRIPTION= ...

  10. [Algorithm] Count Negative Integers in Row/Column-Wise Sorted Matrix

    // Code goes here function countNegative (M, n, m) { count = ; i = ; j = m - ; && i < n) ...