問題:
自定義對象
#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];
修改修改試試~還有不明白歡迎討論
