ios 自定義對象(賦值,指針引用問題)


問題:

自定義對象

#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];

修改修改試試~還有不明白歡迎討論


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM