问题:
自定义对象
#import <Foundation/Foundation.h>
@interface SensorInfo : NSObject
{
NSString *m_strSersonNumber; //传感器编号
NSString *m_strSersonName; //传感器名称
NSString *m_strSceneModelStatus; //传感器状态
NSString *m_strSceneModelIndex; //传感器所属模式
}
@property(retain, nonatomic) NSString *m_strSersonNumber;
@property(retain, nonatomic) NSString *m_strSersonName;
@property(retain, nonatomic) NSString *m_strSceneModelStatus;
@property(retain, nonatomic) NSString *m_strSceneModelIndex;
@end
//.m文件
#import "SensorInfo.h"
@implementation SensorInfo
@synthesize m_strSersonName;
@synthesize m_strSersonNumber;
@synthesize m_strSceneModelStatus;
@synthesize m_strSceneModelIndex;
-(id)init
{
self=[super init];
if (!self)return nil;
return self;
}
- (void)dealloc
{
[m_strSersonName release];
[m_strSersonNumber release];
[m_strSceneModelStatus release];
[m_strSceneModelIndex release];
[super dealloc];
}
1,当A页面(SensorInfo) ----传递----B页面
2,B页面中修改SensorInfo
3,返回A页面的时候,SensorInfo也跟着被修改了 why?B页面中是all init的
解析:打印A,B中的SensorInfo会发现,指针地址是相同的,那么为什么all init之后还是相同指针地址呢!!默认是copy
在SensorInfo中添加函数
- (instancetype)initWithSensorInfo:(SensorInfo *)sensorInfo;
- (instancetype)initWithSensorInfo:(SensorInfo *)sensorInfo
{
self=[super init];
if (self)
{
self.m_strSceneModelIndex = sensorInfo.m_strSceneModelIndex;
self.m_strSersonName =sensorInfo.m_strSersonName;
self.m_strSersonNumber =sensorInfo.m_strSersonNumber;
self.m_strSceneModelStatus =sensorInfo.m_strSceneModelStatus;
return self;
}
return self;
}
B页面在取值的时候可以使用
SensorInfo *sensor = [[SensorInfo alloc] initWithSensorInfo:sensor];
而不是使用
SensorInfo *sensor = [mutArrSersonDevices objectAtIndex:i];
修改修改试试~还有不明白欢迎讨论
