黑马程序员员—OC(block和protocol)

TM1650数码管驱动芯片 简介 TM1650是一款国产4位共阴数码管驱动芯片,它还带有矩阵按键扫码功能。它的基本参数如下: 工作电压:3~5V 数码管驱动模式:8段x4位共阴数码管 矩阵按键驱动模式:7x4矩阵按键,不支持组合键 通信接口:类IIC,使用了IIC相同的时序,但没有完全遵守IIC的协议,不带从机地址 引脚定义 SCL:串行通信时钟线 SDA:串行通信数据线 做数码管驱动使用时 DIGx:数码管的位选引脚,灌电流驱动,最大可吸收150mA电流 A~DP:数码管的段驱动引脚,拉电流驱动,最大可输出25m 阅读详情

                                           ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 

一、 ARC

     ARC是一种编译器特性:编译时编译器帮助完成代码 ,区分于垃圾回收。
    
ARC判断准则:没有强指针指向对象时,会释放对象。


 1.ARC特点
    1> 不允许调用release、retain、retainCount
    2> 能重写dealloc,但是能调用[super dealloc]
    3> @property的参数
      * strong :成员变量是强指针(适用于OC对象类型)
      * weak :成员变量是弱指针(适用于OC对象类型)
      * assign : 适用于非OC对象类型
   4> 以前的retain改为用strong

 
 2. 指针分为强指针和弱指针
    1> 强指针:默认,所有的指针都为强指针 __strong

    2> 弱指针:__weak

3.使用ARC处理循环引用:

  当两端循环引用的时候,解决的方法:

    1. 使用ARC
       修改@property参数:一端用strong,
一端用weak
     2.非ARC
       修改@property参数: 一端用retain另一端用assign

代码示例:

@class  Dog ;

@interface  Person :NSObject     //  Person 类中

@property (nonatomic , strong) Dog  *dog ;

@end

@class  Person

@interface  Dog :NSObject    //  Dog  类中

@property (nonatomic , weak) Person  *person ;

@end

二、block

1 block简述
       * block是OC特有的一种数据类型,在开发中经常使用。
       * block用来保存一段代码
       * block的标志是^

2  block与函数类似:
     * 可以用来保存代码
     * 并且有返回值
     * 有形参

 3.调用的方式与函数一样

       定义方法如下

int (^sumBlock)(int , int);   //  先对其进行声明

sumBlock = ^(int a , int b )     //  对其赋值
{
             return a + b ;
};

还有另一种写法在声明的同时进行赋值

int (^minusBlock)(int , int) = ^(int a, int b)   //  声明的同时对其赋值
{
         return a - b ;
};

使用 block 进行打印出N条线

//     使用block打印n条线

void (^lineBlock)(int) = ^(int  n)
{
          for (int i = 0 ; i < 0 ; i++)
           {
                    NSLog(@"----------") ;
            }
};
 
lineBlock(6) ;    //    n = 6 , 打印6条横线 



4.用typedef 定义block数据类型

typedef  int (^TaBlock)(int a , int b ) ; //  后面可以使用TaBlock这种类型定义block变量



5.block 定义函数指针

//     指向函数的指针

int  (*p)(int , int ) = sum ;
int  d = p(10, 100);


三、protocol协议


 1.协议的定义

    
@protocol   协议名称 <NSObject>

   //   方法声明列表...

@end  

2 . 协议遵守协议


   
 @protocol 协议名称 <其他协议名称1, 其他协议名称2>

     @end

  

   // 一个协议遵守了另外一个协议,就拥有了另一个协议的所有方法声明

     @interface  Myprotocol <Myprotoco13 , Myprotoco12>

     @end

3.协议中方法声明的关键字

     1> @required (默认)

           要求实现,如果没有实现,就会发出警告。

       2>  @optional

4. 定义一个变量,限制这个变量保存的对象遵守某个协议        

        类名 <协议名称> *变量名;

        id <协议名称> 变量名;

NSObject <MyProtocol> *c;

id <MyProtocol> c1;

如果没有协议对应的协议,编译器会报警。

VirtualBox虚拟机拖放文件总失败?手把手教你配置双向拖放与共享文件夹(Ubuntu版) 本文详细指导如何在VirtualBox的Ubuntu虚拟机中配置高效的数据交换方案。核心是安装VirtualBox Guest Additions,并在此基础上开启双向拖放与共享粘贴板功能,同时建立稳定的共享文件夹,彻底解决主机与虚拟机间文件传输失败的问题,构建无缝的跨系统工作环境。 阅读详情

相关推荐

MAC-电脑中的user文件夹在哪?

MAC-电脑中的user文件夹在哪?

兴趣是最好的老师 1万+

黑马程序员——OC语法 blockprotocol

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、block 1.block简介 block是一种数据类型。 block类型的数据封装了一段代码,可以在任何时候执行。(函数相似) block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。 block跟函数很像:      1>可以

jerome3的专栏 642

【从零开始入门unity游戏开发之——C#篇01】理论开篇,理解什么是编程

理论开篇,理解什么是编程

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3017

黑马程序员IOS基础之OCblockprotocol

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! —— 第一章 block 一、block的概念基本的使用 1、block的概念block类型是一个C级别的语法运行机制。除了包含可执行代码外,与堆区、栈区内存绑定的变量,block是一组状态数据。 Objective-cc++都源自于c语言,而我们定义

Dnorsunshine的博客 600

黑马程序员————OC语言BLOCKProtocol总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 什么是bolck: BLOCK是什么呢?苹果推荐的类型,效率高,在运行中保存代码。用来封装保存代码,有点像函数,BLOCK可以在任何时候执行。 BOLCK函数的相似性: (1)可以保存代码 (2)有返回值 (3)有形参 (4)调用方式一样。

whymerain的专栏 432

黑马程序员——OC语言基础篇---blockprotocol

------Java培训、Android培训、iOS培训、.Net培训 期待与您交流! ------- 本篇的主题:blockprotocol block Block封装了一段代码,可以在任何时候执行 Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。 苹果官方建议尽量多用block。在多线程、异步任务、集合遍历、集合排序、动画转场用的很多 标志是^

liufeng124的专栏 597

黑马程序员——OC之ARC、BlockProtocol

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-ARC之前我们说了OC中的内存管理,很繁琐而且不易管理。ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切。 ARC 是编译器特性,而不是 iOS 运行时特

qq_26989441的专栏 507

黑马程序员-OC-blockprotocol

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

追梦人 343

黑马程序员——OCblockprotocol协议

黑马程序员——OCblockprotocol协议  一、block:       1. 作用:用来保存一段代码       2. block的标志:^       3. 定义的格式: 返回值 (^ 变量名) (形参列表)  =  ^{.........};       5. block函数相同点:            1. 都可以保存一段代码

wu417284911的专栏 491

黑马程序员——blockprotocol小结

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- block 先说一下block的基本概念 比较官方的解释:Block 是一种具有匿名功能的内嵌函数 block看上去很像函数,可以保存一段代码,并且可以被调用

mu3677065的专栏 465

黑马程序员】-oc中的blockprotocol

------- android培训、java培训、期待与您交流! ---------- 一. Block类型 block类型封装了一段代码,可以在任何时候执行,而且此段代码是在程序运行过程中保存起来的。 block的标志为:^ block基本定义形式为:                   返回值类型   (^名字)(参数类型) = ^(形参){                    

zhushilong8023的专栏 384

黑马程序员——OC语法,封装block协议protocol

—-Java培训、Android培训、iOS培训、.Net培训、期待与您交流!—-一、block1.block基本认识<1>.block是一种数据类型。 <2>.block类型的数据封装了一段代码,可以在任何时候执行。 <3>.block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。 <4>.block的作用:封装一段代码,以便随时调用,简称代码块 <5>.block

pangetzp_41904129的专栏 563

黑马程序员--11OC Block && protocol

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1.block block作用是封装一段代码,我们也称之为代码块或者代码段,它与函数的区别是,函数在执行main函数之后就不能定义了,而block却可以; main调用一个函数,这个函数一定是在main{},之外的,而block却可以把这段代码写在main里边; 如果是调用 没有返

xizhengmeng的专栏 418

黑马程序员---【OC语言】07block以及protocol

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、block block封装了一段代码,可以在任何时候执行,可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。 1、blocks的定义: int (^MySum)(int, int) = ^(int a, int b) { retu

xiaofei930306的专栏 498

黑马程序员——10、OC语言(blockprotocol代理模式)

一、block

tan_qi的专栏 590

黑马程序员】---ARC、block类型protocol协议总结

------- android培训、java培训、期待与您交流! ---------- ARC、block类型protocol协议总结 1.ARC ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。 ARC的判断准则:只要没有强指针指向对象,就会释放对象

u010001701的专栏 554

黑马程序员-[OC]学习之旅-blockprotocol的概念及使用

block 的概念使用 block是一种数据类型, 可以使用这种数据类型定义变量, 并赋值。  block数据类型在使用前需要先定义该数据类型, 然后再使用(就像使用Person类一样, 先定义一个Person类, 然后再通过Person类声明一个Person类型变量)。 block这种数据类型用来保存一个方法、函数、一段代码 int (^block)(int,int) = ^(int

qq_15565719的博客 412

黑马程序员——OC语言------Blockprotocol协议、代理设计

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Block   一、概述 Block封装了一段代码,可以在任何时候执行 Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。 苹果官方建议尽量多用block。在多线程、异步任务、集合遍历、集合排序、动画转场用的很多 二、Block的定义 1> 如何定

casono1的专栏 523

黑马程序员OC语言基础—Block类型与Protocol协议小结

————————Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———————

编程之路 379

黑马程序员 blockprotocol

——- android培训、java培训、ios培训期待与您交流!一、block基础用法blockOC中的一种数据类型,在iOS开发中被广泛使用 ^是Block的特有标记 作用: block用于封装一段代码,可以在任何时候使用。 block可以作为函数参数或者函数返回值,而其本身又可以带参数或返回值。定义block变量返回值数据类型(^变量名称)(参数类型,参数

千江有水千江月,万里无云万里天。 418

黑马程序员——OC语言——blockprotocol、代理模式

----------android培训、java培训、java学习型技术博客、期待与您交流!------------------ 一,bock 1.block的简介 (1)block用来保存一段代码,可以在任何时候执行。block的标志:^。 (2)block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。 (3)苹果官方建议尽量多用block。在多线

manitokun的专栏 364

用 Ace Data Cloud 快速接入 AI 音乐生成:Producer Audios API 实战指南

# 用 Ace Data Cloud 快速接入 AI 音乐生成:Producer Audios API 实战指南 AIGC 正在从“生成文字、生成图片”快速扩展到“生成音频、生成视频、生成完整内容资产”。对于开发者产品团队来说,AI 音乐生成已经不只是一个好玩的工具,而是可以直接落地到短视频配乐、广告创意、游戏 BGM、播客片头、品牌音频素材、电商内容生产等场景里的基础能力。 如果你希望把

静觅 200

全新u全返方式积分返方式二合一源码商城系统挂卖消费全返源码.zip

1.商城系统能够 挂卖产品可得到是多少積分,比如选购一份商品1200元获1200购物返利積分。注:后台管理价钱与積分可自定,归属于消費全返方式下降返利奖赏2.投1200元固定不动每日二十元奖赏(不下降)归属于投资理财版块,70取现、20股票基金、10服务费。。后台管理投资理财产品、奖赏、日数可自定。注:能够 手动式设定取现時间,比如礼拜天不取现。3. 推存一份1200元理财产品,代:奖励80元现金 第二代:奖励40元现金,例外推存可获得800积分 每天0.005递减返现奖励。后台奖励与百分比可自定义。注:分销后台可以自定义开启几代,这里的积分是返在消费返利里4. 升级为代理 获得伞下会每1200元/份的400积分奖励每天0.0025递减返现奖励。后台奖励与百分比可自定义说明:环境:linux 宝塔 apapche PHP5.6(建议开通宝塔专业版,每天获取蜘蛛爬行情况并守护服务器安全1、上传到网站根目录2、在宝塔数据库管理导入数据库文件3、修改数据库链接文件 /application/database.php4、后台地址 http://您域名/admin.php

matlab仿真实现基于模型预测控制(mpc)的双轮差速运动学轨迹跟踪

内容:基于双轮差速运动学模型,建立预测模型并离散化,线性化,通过模型预测控制(mpc)实现双轮差速小车对给定轨迹的跟踪。实现方式:matlab脚本函数(注意:非simulink方式)

上一篇: 黑马程序员 —OC(@property和@synthesize)
下一篇: 黑马程序员 —OC(Foundation)
macau1
博客等级 码龄12年 1粉丝 10原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值