今天在看别人开源项目的时候看到这样的代码:

正文从这里开始~~~

定义如下:

/**
评论详情页基础设置
@param BaseSettingBlock 基础设置
*/
- (void)setUpComPicAttribute:(void(^)(NSArray **imageArray,NSString **comComtent,NSString **comSpecifications,NSInteger *selectCount))BaseSettingBlock;

实现如下:

#pragma mark - 基础设置
- (void)setUpComPicAttribute:(void(^)(NSArray **imageArray,NSString **comComtent,NSString **comSpecifications,NSInteger *selectCount))BaseSettingBlock{ NSArray *imageArray;
NSString *comSpecifications;
NSString *comComtent; NSInteger selectCount; if (BaseSettingBlock) {
BaseSettingBlock(&imageArray,&comComtent,&comSpecifications,&selectCount); self.imageArray = imageArray;
self.comComtent = comComtent;
self.comSpecifications = comSpecifications;
self.selectCount = selectCount;
}
}

调用如下:

注意: 这里调用的时候__autoreleasing是系统默认加上的

[dcComVc setUpComPicAttribute:^(NSArray *__autoreleasing *imageArray, NSString *__autoreleasing *comComtent, NSString *__autoreleasing *comSpecifications, NSInteger *selectCount) {

        *imageArray = weakSelf.picUrlArray;
*comComtent = weakSelf.comContent;
*comSpecifications = weakSelf.comSpecifications; *selectCount = indexPath.row;
}];

爱学习的思思赶紧百度下这种写法,原来这里涉及到iOS开发ARC内存管理技术了。

以下两句代码意义是相同的:

NSString *str = [[[NSString alloc] initWithFormat:@"hehe"] autorelease]; // MRC
NSString *__autoreleasing str = [[NSString alloc] initWithFormat:@"hehe"]; // ARC

__autoreleasing在ARC中主要用在参数传递返回值(out-parameters)和引用传递参数(pass-by-reference)的情况下。

以下代码是等同的:

- (NSString *)doSomething:(NSNumber **)value
{
// do something
}
- (NSString *)doSomething:(NSNumber * __autoreleasing *)value
{
// do something
}

除非你显式得给value声明了__strong,否则value默认就是__autoreleasing的。

(NSNumber **)value和(NSNumber * __autoreleasing *)value的更多相关文章

  1. Objective - C 值对象 NSNumber和NSValue

    在进行数据处理的时候,因为对象类型的不同, 并不能进行相应的数据处理,所以必须要进行数据类型的转换,这也就是NSNumber,NSValue这两类值对象出现的原因. 简而言之,NSNumber就是实现 ...

  2. Foundation ----->NSNumber

    /*--------------------NSNumber--------------------*/     //包装基本数据类型          //1.创建number对象     //12 ...

  3. NSString NSNumber 相互转化

    NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init]; NSNumber *firstNum = [NSNumber n ...

  4. OC NSNumber NSValue

    OC NSNumber NSValue iOS的集合对象不可以存储C语言基本类型,所有可以进行装箱和拆箱,来进行OC对象操作. NSNumber包装类 普通初始化 NSNumber * num1 = ...

  5. iOS学习14之OC NSNumber + NSValue

    1.NSNumber 数值类. 作用:实现基本数据类型与OC对象类型的相互转化. 1> NSNumber创建对象 // 初始化方法 NSNumber *num1 = [[NSNumber all ...

  6. NSNumber和NSValue

    在进行数据处理的时候,因为对象类型的不同, 并不能进行相应的数据处理,所以必须要进行数据类型的转换,这也就是NSNumber,NSValue这两类值对象出现的原因. 简而言之,NSNumber就是实现 ...

  7. NSDate,NSNumber,NSValue

    NSDate #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleas ...

  8. [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}

    IOS数组.字典.NSNumber 新写法—— @[].@{}   //标准写法 NSNumber * number = [NSNumber numberWithInt:]; NSArray * ar ...

  9. iOS - OC NSNumber 数字

    前言 @interface NSNumber : NSValue @interface NSDecimalNumber : NSNumber 将基本数据类型包装成 OC 对象 1.NSNumber 与 ...

随机推荐

  1. Longest Repeating Subsequence

    Description Given a string, find length of the longest repeating subsequence such that the two subse ...

  2. cube.js 学习(七)cube.js type 以及format 说明

      cube.js 对于measure以及dimension 提供了丰富的数据类型,基本满足我们常见应用的开发,同时对于不同类型也提供了 格式化的操作 measure类型 number 格式 purc ...

  3. flutter 省市区选择器 city_pickers 的简单实用

    Github地址:https://github.com/hanxu317317/city_pickers packages地址: https://pub.flutter-io.cn/packages/ ...

  4. linux 查看内存,free,ps,说明Buffers,Cached,SReclaimable

    查看机器剩余内存free即可,百度就可以轻松查到,主要想说的 查所有进程占用内存情况并排序: ps aux | sort -nk5 k5代表根据RSS排序,k6代表VSZ排序. ----------- ...

  5. CSP-S 复赛之前的任务计划

    一. 最短路算法复习 ★1.Dijkstra: 2. SPFA: 3. Floyd: 二. DP 复习 ★1.背包问题: 2.区间 DP: 3.状压 DP: 三. 数据结构 ★1. 线段树: 2. 树 ...

  6. dict 的 items() 方法与 iteritems() 方法的不同?

    items方法将所有的字典以列表方式返回,其中项在返回时没有特殊的顺序: iteritems方法有相似的作用,但是返回一个迭代器对象

  7. 【随记】SQL Server配置管理器”远程过程调用失败“的问题解决

    打开配置管理器时出现如下错误: 问题原因: 在电脑上安装vs2012.vs2013,vs2015.vs2017.vs2019时会安装[Express LocalDB] 解决方案: 卸载所有[XXXLo ...

  8. docker-machine 远程安装docker

    base=https://github.com/docker/machine/releases/download/v0.14.0 && curl -L $base/docker-mac ...

  9. NOIP提高组初战告捷

    前天第一次参加NOIP初赛,竟然提高组考了57分进入复赛啊啊!原本自己估分是52竟然估少了[滑稽]这个成绩 是我们学校初一提高组成绩最高 还是不错(出乎我意料之外)的!

  10. weblogic介绍

    快速阅读 介绍weblogic中间件,以及自身架构和几个基本概念,如何下载,安装等后面再详细介绍 . 什么是weblogic WebLogic最早由 WebLogic Inc. 开发,后并入BEA 公 ...