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