首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在ARC Objective C中输出参数

在ARC(Automatic Reference Counting)Objective-C中,输出参数是通过指针实现的。这意味着当你需要从一个方法中返回多个值时,你可以使用输出参数。输出参数在方法签名中使用关键字out进行标注,并且在方法内部进行赋值。

例如,我们有一个方法getMinMax:andMax:,它返回两个整数的最小值和最大值:

代码语言:objective-c
复制
- (void)getMinMax:(NSInteger *)min andMax:(NSInteger *)max {
    NSInteger a = 5;
    NSInteger b = 10;

    if (a < b) {
        *min = a;
        *max = b;
    } else {
        *min = b;
        *max = a;
    }
}

在调用这个方法时,我们需要传递两个指针,用于接收最小值和最大值:

代码语言:objective-c
复制
NSInteger min, max;
[self getMinMax:&min andMax:&max];
NSLog(@"Min: %ld, Max: %ld", (long)min, (long)max);

输出结果将会是:

代码语言:txt
复制
Min: 5, Max: 10

在这个例子中,我们使用了指针*来访问和修改变量的值。这就是在ARC Objective-C中输出参数的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Objective-C 内存管理之 _ARC

内存管理之 ARC 和 自己主动释放池 一、ARC 的变量全部权修饰符 变量修饰符,主要用来标识对象的生命周期.在手动内存管理方式没有这些概念....alloc] initWithFormat:@"I am studying"]; NSLog (@"str : %@",str); 由于 str 这个对象是弱引用,编译器会提示,这是一个弱引用,输出的结果...假设在你自己定义的类依赖其他对象时,你须要重写dealloc方法。而且在这种方法释放依赖的对象 假设在设计的循环体中会占用较多的内存空间。建议手动创建自己主动释放池。...假设你须要管理资源而不是释放实例变量,你应该事先 dealloc 方法.不能再 dealloc 方法里面去调[ super dealloc] 方法, ARC下父类的 dealloc 相同由编译器来自己主动完毕...不能在 C 结构中使用对象指针,假设有相似功能,能够创建一个 Objective-C 类来管理这些对象 id和 void * 之间没有简便的转换方法,相同在Objective-C 和 Core Foundation

57210
  • Objective-C浅谈面向对象

    接触面向对象也有一段时间了,当时是通过C++学习的OOP,后来又接触到了PHP和Java。...简单的说来,便利构造器是为了简化对象的初始化而生的,之前的博客也说了一嘴:编程是间接的过程,其实使用便利构造器就是间接的过程。程序处处都用到了间接。...函数就是一个最好的例子,把程序不变且常用的部分进行封装,然后把变的部分用函数的参数列表传进来,这样就很好的实现代码的重用功能,这也是函数存在编程的意义所在。...OC类是由接口(interface)和实现(implementation)两部分构成的。OC类是通过两个单独的文件定义。...,OC定义参数的方式是: (参数类型)参数名    第二个参数别名:(参数类型)参数名          ​    ​使用便利初始化方法来进行对象的初始化,代码如下: //调用便利初始化方法 Student

    1.1K60

    Objective-C编写省略参数的多参函数

    Objective-C编写省略参数的多参数函数 引语: Object-C,我们会遇到很多像NSLog这样的函数,其中参数的个数不确定,由程序员自由控制,初始化数组,字典等方面应用广泛,那么,这类的函数是如何实现的呢...一、了解几个概念 va_list C语言中定义的一个指针,用于指向当前的参数。...,比如如果一个函数参数如下: void func(int a,int b,int c,int d) 那么传递参数的时候参数d先入栈,接着是c、b、a。...如此这样,取参的时候,根据堆栈的取值原则,则取值顺序为a、b、c、d。所以原理上,只要我们知道第一个参数的地址和每个参数的类型,我们就可以将参数都取出来。.../必须有nil 四、一点补充 细心的你可能发现了,这里的nil是我们调用函数时手动加上的,可是系统的许多函数我们调用时,系统直接帮我们加上了参数结尾的那个nil,例如 NSArray * array

    1K10

    C# 参数数组、引用参数输出参数

    C# 参数数组、引用参数输出参数 本文目录 1 参数数组 2 引用参数 3 输出参数 参数数组 C#,可以为函数指定一个不定长的参数,这个参数是函数定义的最后一个参数,这个参数叫做参数数组。...,即vals,定义该参数时,需要使用params参数。...调用该函数时,可以给参数输入传入多个实参。 引用参数 可以通过引用传递参数,需要使用ref关键字。...,所以可以函数修改变量a和b的值,需要注意的是,调用函数时也要使用ref传递引用参数。...输出参数 输出参数使用out关键字,它的效果与引用参数几乎相同,不同点是: 引用参数的实参必须是已经赋值的变量,而输出参数不必。 函数使用输出参数时,应该把它看作是未赋值的。

    3.2K30

    属性“__attribute__”Objective-C的应用

    属性“__attribute__”Objective-C的应用       关于__attribute__,你可能用的不多,但是一定经常见到,系统的Foundation框架,__attribute...1.format       format用来对格式化字符串的参数使用情况进行检查,例如在使用NSLog函数进行输出时,如果我们传入的可变参数没有格式化字符串中使用,编译器会提示警告,如下: ?...deprecated属性也可以添加一个参数来指定要输出的警告信息,例如: ?...8. objc_requires_super       这个属性用来修饰Objective-C父类的方法,如果子类进行了重写,重写的方法没有调用父类方法,则会进行编译器提示。...10. overloadable       C语言中,对于相同的函数名,哪怕参数不同,也不能够重复定义。

    2.3K20

    Objective-C把URL请求的参数转换为字典

    上一篇博客是把URL转换为字典,那么我们如何把URL请求参数封装成字典,然后再封装成数组呢?...对OC字符串操作熟练的小伙伴们应该觉得这是一个a+b的问题,没错把URL参数转换为字典主要是对字符串的截取,关键是怎么个截法,才能把字符串参数列表分别转换成键值对。...a=10&b=20&c=30",     "http://www.baidu.com?...a=10&c=30" )     ​    ​接下来就是要把每个url参数列表转换成字典,主要代码如下:     ​    ​    ​代码说明:     ​    ​    ​    ​1.先把参数列表...url参数列表的起始位置获取到,通过方法rangeOfString方法获取     ​    ​    ​    ​2.位置获取到以后我们可以把参数列表从url字符串中提取出来,通过substringFromIndex

    1.8K60

    Objective-C的集合类

    下面详细的介绍Objective-C的集合类以及每个集合类的用法,学过其他面向对象编程语言的小伙伴们看到OC的集合类会有种莫名的亲切感,理解起来问题不大,可以类比Java的集合类去学习...Objective-C的集合类主要包括不可变的数组--NSArray,  可变的数组--NSMutableArray,   不可变的字典--NSDictionary,    可变的字典--NSMutableDictionary...一、数组         1.不可变的数组  NSArray             数组是有序对象的集合,用来存储对象的有序列表,OC数组必须存的是对象,不能是基本数据类型,若想存入基本数据类型...NSArray也是OC的一个对象,使用NSArray也需要进行实例化,前面的博客类的初始化中提到了便利初始化函数和便利构造器,NSArray也少不了这两样东西我们可以通过NSArray的便利初始化函数或者便利构造器进行...= set2"); }   //查看一个元素是否一个set if ([set1 member:@"aa"]) {     NSLog(@"aa set1"); }     ​运行结果为: 1

    1.1K70

    Objective-C的属性机制

    Objective-C 2.0的属性机制为我们提供了便捷的获取和设置实例变量的方式,也可以说属性为我们提供了一个默认的设置器和访问器的实现。...@protected :受保护的,该实例变量只能在该类和其子类内访问,父类protected的实例变量子类是private的默认是protected;         3....下面我们要学习一下OC的属性机制。         ...idNumber; } //定义属性 @property NSString *name; @property int idNumber; //定义其他方法 @end   2.属性的实现  实现文件我们用...getter和setter方法时有一点要注意:以neme为例,getter方法名为 name, 而setter的名为 setName;使用getter和setter方法时和普通的函数用法一样 ​//调用

    1.3K70

    Objective-CNSInvocation的使用

    OC调用方法某个对象的消息呦两种方式: #1. performanceSelector: withObject: #2. NSInvocation....]; //用performanceSelector调用三个参数的方法, 但只传递2个参数, 这样方法的第三个参数会自动取我们传的第二个的值 [self performSelector...invocationWithMethodSignature:signature]; //设置方法的调用者 invocation.target = self; //设置方法名, 这里一定要跟方法签名类的方法名一致...NSString *)str3 { NSLog(@"%@", str1); NSLog(@"%@", str2); NSLog(@"%@", str3); } @end 输出结果为...//此处不能通过遍历参数数组来设置参数,因为外界传进来的参数个数是不可控的 //因此通过numberOfArguments方法获取的参数个数,是包含self和_cmd的,然后比较方法需要的参数和外界传进来的参数个数

    73620

    Objective-C的内存管理

    XCode4以后的版本采取自动引用计数(Automatic Reference Counting)简称ARC, 默认的是ARC模式,ARC下是不能直接调用retain,release, releaseCount...等方法的,需要在XCode中进行设置,设置如下: 把Objective-C Automatic Reference Counting 改为NO,即可。     ​    ​...(3).可变数组移除一个str,观察retainCount的变化     ​    ​    ​(4)我们为什么要用可变的字符串呢?稍后会提到为什么。...:303] 传入的变量FomatRetainCount = 3 2014-08-03 20:18:37.240 Memory[2499:303] 传入的变量RetainCount = 3     ​Objective-C...ARC(Automatic Reference Counting)     ​    1.​ARC应注意的问题:     ​    ​    ​(1).

    80590

    Objective-CNSArray类的解读

    Objective-CNSArray类的解读     NSArray数组类是Objective-C语言中常用的也是重要的一个类,除了开发中常用到的一些基础功能,NSArray及其相关类还封装了许多更加强大的功能...:(NSUInteger)index; //初始化方法 - (instancetype)init; //通过C语言风格的数组创建NSArray对象 需要注意,C数组需要为Objective对象,cnt...参数C数组的长度 //如果cnt的值小于C数组的长度,则会对C数据进行截取赋值,如果大于则程序会崩溃 - (instancetype)initWithObjects:(const ObjectType...objects参数需要为分配好空间的C指针 - (void)getObjects:(ObjectType __unsafe_unretained [])objects range:(NSRange)range...opts usingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0); //一个下标集合枚举

    1.3K20

    Objective-Cruntime机制的应用

    Objective-Cruntime机制的应用 一、初识runtime         Objective-C是一种动态语言,所谓动态语言,是程序执行时动态的确定变量类型,执行变量类型对应的方法的...因此,Object-C中常用字符串映射类的技巧来动态创建类对象。因为OC的动态语言特性,我们可以通过一些手段,程序运行时动态的更改对象的变量甚至方法,这就是我们所说的runtime机制。...,我们没有办法使用点语法做任何操作,privateOne和PrivateTow两个变量虽然声明了头文件,却是私有类型的,通过指针的方式我们虽然可以看到他们,却不能做任何读取修改的操作,xcode的提示如下...int型变量的时候,你或许会遇到一个问题,ARC下,编译器不允许你将int类型的值赋值给id,buildset中将Objective-C Automatic Reference Counting修改为...五、让我看看你的方法吧         变量通过runtime机制我们可以取到和改变值,那么我们再大胆一点,试试那些私有的方法,首先我们MyObject类添加一些方法,我们只实现,并不声明他们: @

    40650

    Objective-C的继承和多态

    Objective-Csuper是指向直接父类的指针,而self是指向本身的指针,self就相当于java的this指针。...OC写类时可以@implementation定义哪些@interface无相应声明的方法,但这个方法是私有的,仅在类的实现中使用。         ...Objectiv-C几乎所有的类都是继承自NSObject类,NSObject类存在大量功能强大的方法。下面对NSObject类的各种方法进行试验和介绍:         1....= str1"); }     ​    ​Objective-C的继承         继承是is-a的关系,比如猫咪是一个动物,那么动物是父类,而猫咪是动物的子类。...2014-07-30 08:38:12.958 HelloOC[483:303] 我是富二代BILL`s son,我超喜欢飙车 ​Objective-C的多态     ​    ​多态简单的说就是对于不同对象响应同一个方法时做出的不同反应

    1.2K80

    Objective-C的Block(闭包)

    用大白话说就是匿名函数,也就是函数可以包含这函数。就是函数可以定义匿名函数然后函数调用。...输出连个变量的值和参数     void (^myBlock) () = ^()     {         NSLog(@"*************************************...*****");         NSLog(@"block块输出局部变量的可变和不可变变量");         NSLog(@"str1 = %@,  str1_p = %p", str1, str1...,代码块输出的不可变对象是原有的值,而不是我们改后的值,地址也是初始的地址。...2.成员变量block的使用     ​    ​成员变量block的使用是加上self->a使用的,所以声明成员变量的时候加不加__block,成员函数的代码块中都可以访问修改;     ​    ​

    1.5K90
    领券