OC如何实现函数参数对象的地址传

简介: OC如何实现函数参数对象的地址传

你发现采用C/C++的&传递地址函数参数编译器报错。那么做到给函数传递地址,让函数改变参数对象的指针呢?

解决办法:我们不能直接修改对象的地址,但是可以通过修改对象的成员函数指针的指向来变相实现对象地址的

转变。当然你可以采用定义一个本页面对象的对象,传递参数的编号来实现修改那个成员变量。


@interface PPHotListEntity : PPJoyListEntity

@property (nonatomic, assign) NSUInteger page;

@property (nonatomic, assign) NSInteger cate_id;

@property (nonatomic, assign) BOOL is_hot;

@property (nonatomic, assign) long long receiveTime;

//@property (nonatomic, assign) long long newsMessageTime;


@property (nonatomic, strong) PPHotMessageEntity *firstMessage;

@property (nonatomic, strong) PPHotMessageEntity *secondMessage;

@property (nonatomic, strong) PPHotMessageEntity *thirdMessage;

@property (nonatomic, strong) PPHotMessageEntity *fouthMessage;


@property (nonatomic, strong) NSMutableArray *roomList;

@property (nonatomic, strong) NSMutableArray *messageList;


@property (nonatomic, assign) BOOL is_page;


@end


-(void)moveMessageViewWithDecHotMessageView:(PPHotMessageView *)decHotMessageView decHotMessageEntityIndex:(NSUInteger)decHotMessageEntityIndex srcHotMessageEntity:(PPHotMessageEntity *)srcHotMessageEntity

{

if(1 == decHotMessageEntityIndex)

{

self.hotListEntity.firstMessage = [[PPHotMessageEntity alloc] initWithHotMessageEntity:srcHotMessageEntity];

decHotMessageView.hidden = NO;

decHotMessageView.model = self.hotListEntity.firstMessage ;

}

else if(2 == decHotMessageEntityIndex)

{

self.hotListEntity.secondMessage = [[PPHotMessageEntity alloc] initWithHotMessageEntity:srcHotMessageEntity];

decHotMessageView.hidden = NO;

decHotMessageView.model = self.hotListEntity.secondMessage ;

}

else if(3 == decHotMessageEntityIndex)

{

self.hotListEntity.thirdMessage = [[PPHotMessageEntity alloc] initWithHotMessageEntity:srcHotMessageEntity];

decHotMessageView.hidden = NO;

decHotMessageView.model = self.hotListEntity.thirdMessage ;

}

else if(4 == decHotMessageEntityIndex)

{

self.hotListEntity.fouthMessage = [[PPHotMessageEntity alloc] initWithHotMessageEntity:srcHotMessageEntity];

decHotMessageView.hidden = NO;

decHotMessageView.model = self.hotListEntity.fouthMessage ;

}


}


目录
相关文章
|
4月前
|
编译器 C++
C++ 解引用与函数基础:内存地址、调用方法及声明
C++ 中的解引用允许通过指针访问变量值。使用 `*` 运算符可解引用指针并修改原始变量。注意确保指针有效且不为空,以防止程序崩溃。函数是封装代码的单元,用于执行特定任务。理解函数的声明、定义、参数和返回值是关键。函数重载允许同一名称但不同参数列表的函数存在。关注公众号 `Let us Coding` 获取更多内容。
166 1
|
4月前
|
前端开发 JavaScript
怎样使用接口引用数据
怎样使用接口引用数据
|
程序员 编译器 数据安全/隐私保护
内存、引用、封装、函数
内存、引用、封装、函数
67 0
|
Dart 前端开发 JavaScript
dart中将方法当做参数传递时的注意事项
众所周知,Dart是一门面向对象的语言,比Java更纯粹,Dart中的方法也是对象,也有类型Function。这意味着方法可以被分配给对象,也可以当做参数传递给其他方法。
|
存储 Java 程序员
Go语言:参数传递中,值、引用及指针之间的区别
1、在Go语言中,值类型和引用类型有以下特点: a、值类型:基本数据类型,int,float,bool,string,以及数组和struct 特点:变量直接存储值,内存通常在栈上分配,栈在函数调用完会被释放
241 0
Go语言:参数传递中,值、引用及指针之间的区别
引用调用
引用调用
109 0
|
Java
java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
答:是值传递。Java编程语言只有值传递参数。 当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。
12451 0
|
缓存 前端开发 Swift
Swift实用小册06:函数的定义、参数、返回、调用
Swift实用小册06:函数的定义、参数、返回、调用
221 0
Swift实用小册06:函数的定义、参数、返回、调用
|
iOS开发 C++
几个示例带你去了解OC对象是怎么分配内存的
1、64位系统环境的OC对象最小分配内存为16字节。 2、结构体内存对齐,是指在计算结构体大小的时候,其分配的原则:结构体大小必须是最大成员变量分配内存的倍数。 3、iOS操作系统在分配内存的时候,也有内存对齐的概念,为16的倍数 :在iOS的堆空间中,如果要创建一个OC对象,分配内存时,都是16的倍数。
202 0