2017年2月24日
一.属性等效替换方法
1.ARC(其他和MRC类似)
- (void)setAnswerArr:(NSArray *)answerArr
{
if (_answerArr != answerArr) {
_answerArr = nil;
_answerArr = answerArr;
}
}
2.MRC
2.1有时我们这样定义
//.h
@property(nonatomic,copy) NSString *name;
//.m
@synthesize name = _name;
其实等效如下方法
//.h
- (NSString*) name;
- (void) setName:(NSString*)newName;
//.m
- (NSString*)name
{
return _name;
}
- (void)setName:(NSString *)name
{
if (_name != name) {
[_name release];
_name = [name copy];
}
}
2.2一般这样用就可以
//.h
@property(nonatomic,copy) NSString *name;
//.m (以下方法可用来调试,或者给属性添加附加动作)【如果没有特别情况可以不写下面方法】
- (void)setName:(NSString *)name
{
if (_name != name) {
[_name release];
_name = [name copy];
//附加代码
}
}
2017年2月23日
一. 数据类型保护
场景:后台返回数据有时候不按约定来,要返回NSString,可能会返回NSNumber(NSDictionary 结构去操作NSNumber经常会奔溃)
解决:不管是 NSNumber 或 NSString 类型返回,全部转化成 NSString
/**
获得string对象
@return string
*/
+ (NSString*)stringValue:(id)value
{
NSString *reslut = @"";
if ([value isKindOfClass:[NSNumber class]]){
reslut = [NSString stringWithFormat:@"%lld",[(NSNumber*)value longLongValue]];
}else {
reslut = value;
}
return reslut;
}
//用法:
NSString *patientInhospitalId = [HuConfigration stringValue:dic[@"data"][@"id"]];
二.NSNumber如何转换成NSString类型(NSDictionary 结构去操作NSNumber经常会奔溃)
NSMutableDictionary *tempDic = [[NSMutableDictionary alloc] init];
[tempDic setObject:[(NSNumber *)dict[kSendTypeKey] stringValue] forKey:kSendTypeKey];
如果您发现本文对你有所帮助,如果您认为其他人也可能受益,请把它分享出去。