当前位置:首页 > 问问

i set with 有什么区别 "i set和set with有何不同"

1、两者的定义

i set 和 i set with 是 iOS 中的两个 API,都可以用来对一个对象进行赋值操作。i set 只能处理对象类型,而 i set with 包含了 i set 的全部功能,同时还可以处理结构体类型。

可以简单理解为:i set 可以对 NSObject 类型进行赋值,而 i set with 既可以对 NSObject 类型进行赋值,还可以对其他类型的对象进行赋值。

2、两者的使用

在代码中,i set 使用的形式为:

[(NSObject*)receiver i:setter with:(id)value];

而 i set with 使用的形式为:

[receiver i:setter withStruct:&value];

可以看到,i set 是调用 receiver 的 i 方法,而 i set with 则是调用 receiver 的 iStruct 方法。调用时要注意参数类型。

3、两者的区别

i set和 i set with 最明显的区别就是 i set 只能对 NSObject 类型的对象进行赋值,而 i set with 可以对其他类型的对象进行赋值。

i set with 的用法也比 i set 更加灵活,除了可以进行普通对象的赋值以外,还可以对结构体类型的变量进行赋值。

另外,使用 i set with 的时候,可以通过指针来改变变量的内容,而 i set 不行。

4、两者的适用场景

i set 主要适用于对 NSObject 类型的对象进行赋值,比如设置一个类的成员变量,或者给一个对象发送一个消息。

i set with 则更加灵活,除了可以对 NSObject 类型的对象进行赋值以外,还可以对结构体类型的变量进行赋值。因此,在需要对结构体类型的变量进行改变的时候,使用 i set with 更加方便。

总的来说,i set 和 i set with 都是 iOS 中非常常用的 API,开发者在具体应用中,需要根据具体需求进行选择使用。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信

相关文章