2

私はJaveでデータ転送オブジェクトを使用しています。

public class AccountDEM
{
  private String userName;
  private String userAuthToken;
  private int user_Id;

  public void setuserName(String _userName)
  {
    this.userName=_userName;
  }
  public string getuserName()
  {
    return userName;
  }
 ...
}

どうすればObjectiveCで同じものを使用できますか。おそらく「ObjectiveCのプロパティ」は私が思う目的に役立つでしょう。しかし、Objective Cのプロパティを使用してDTOを記述し、それらを効果的に使用し、メモリを安全に保つ(メモリリークを回避する)方法を詳しく説明できる人がいます。

可能であれば、上記のコードをObjCに変換してみてください。

4

3 に答える 3

2
@interface AccountDEM
@property (nonatomic,retain) NSString* userName;
@property (nonatomic,retain) NSString* userAuthToken;
@property (nonatomic) int user_Id;
@end


@implementaion
@synthesize userName;
@synthesize userAuthToken;
@synthesize user_Id;
@end

プロパティについては、 http://objective-c-properties.blogspot.in/を読むことができます

于 2012-07-12T09:15:10.277 に答える
1

現代の答え:

@interface AccountDEM : NSObject

@property (nonatomic) NSString *userName;
@property (nonatomic) NSString *userAuthToken;
@property (nonatomic) NSNumber *user_Id;

@end

@implementaion

// no need in additional code

@end

NSObjectからサブクラス化することを忘れないでください(ほとんどの場合、NSProxyからサブクラス化することもできます)

于 2014-06-04T11:18:28.277 に答える
0

私の場合、DTOパターンには、辞書のような外部形式への読み取り/書き込みオブジェクトが含まれている必要があると思います

// .h
@interface AccountDEM

@property (nonatomic, copy) NSString* userName;
@property (nonatomic, copy) NSString* userAuthToken;
@property (nonatomic) int userIdentifier;

// transfer between dictionary and object
@property (nonatomic, readonly) NSDictionary *serialized;

- (instancetype) initWithDictionary:(NSDictionary *)serialized;

@end

// .m
@interface AccountDEM

@property (nonatomic, strong) NSDictionary *dictionaryRepresentation; 

@end

@implementaion

- (void)setObject:(id)object forKey:(id<NSCopying>)key {
    if (key) {
        if (obj) {
            NSMutableDictionary *dictionary = [self.dictionaryRepresentation mutableCopy];
            [dictionary removeObjectForKey:key];
            self.dictionaryRepresentation = [dictionary copy];
        }
        else {
            NSMutableDictionary *dictionary = [self.dictionaryRepresentation mutableCopy];
            dictionary[key] = obj;
            self.dictionaryRepresentation = [dictionary copy];
        }
    }
}

- (id)objectForKey:(id<NSCopying>)key {
    if (!key) {
        return nil;
    }

    return self.dictionaryRepresentation[key];
}

#pragma mark - Custom Getters/Setters
- (void)setUserName:(NSString *)userName {  
    [self setObject:userName forKey:@"UserName"];
}

- (NSString *)userName {
    return
    [self objectForKey:@"UserName"];
}

- (void)setUserAuthToken:(NSString *)userAuthToken {    
    [self setObject:userAuthToken forKey:@"UserAuthToken"];
}

- (NSString *)userAuthToken {
    return  
    [self objectForKey:@"UserAuthToken"];
}

- (void)setUserIdentifier:(int)userIdentifier {
    [self setObject:@(userIdentifier) forKey:@"UserIdentifier"];
}

- (int)userIdentifier {
    return  
    [[self objectForKey:@"UserIdentifier"] intValue];
}


#pragma mark - Transfer
- (NSDictionary *)serialized {
    return self.dictionaryRepresentation;
}

- (instancetype) initWithDictionary:(NSDictionary *)serialized {
    self = [super init];

    if (self) {
        // any validation about serialized object
        // and put it into dictionaryRepresentation
        _dictionaryRepresentation = serialized;
    }
    return self;
}

@end
于 2015-08-13T15:09:03.607 に答える