ValueObject
#import <Foundation/Foundation.h>
@interface CurrentDataVO : NSObject
@property (nonatomic, retain) NSString *crt;
@property (nonatomic, retain) NSString *last;
@property (nonatomic, retain) NSString *dataType;
@property (nonatomic, retain) NSString *date;
@property (nonatomic, retain) NSMutableArray *days;
@property (nonatomic, retain) NSString *cv;
- (void)showAllData;
#import "CurrentDataVO.h"
@implementation CurrentDataVO
@synthesize crt;
@synthesize last;
@synthesize dataType;
@synthesize date;
@synthesize days;
@synthesize cv;
- (id)init
{
self = [super init];
if (self) {
days = [[NSMutableArray alloc] init];
}
return self;
}
- (void)showAllData
{
NSLog(@"%@", crt);
NSLog(@"%@", last);
NSLog(@"%@", dataType);
NSLog(@"%@", date);
NSLog(@"%@", cv);
NSLog(@"%@", days);
}
@end
ViewCtrlA
[cell setContentData:todayData withYesData:vo.last];
ViewCtrlB
- (void)setContentData:(NSString *)todayData withYesData:(NSString *)yesData
{
[todayDataLabel setText:todayData];
[yesDataLabel setText:yesData];
}
cell不为nil
在ViewCtrlB中 NSlog 能打印出 todayData,但是赋值到setText中时会抛出异常。
2012-12-13 14:10:35.510 mbaforios[29723:fb03] 1005
2012-12-13 14:10:35.511 mbaforios[29723:fb03] -[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0x6b904e0
2012-12-13 14:10:35.511 mbaforios[29723:fb03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0x6b904e0'
*** First throw call stack:
(0x12f1022 0x17a2cd6 0x12f2cbd 0x1257ed0 0x1257cb2 0x46a0ff 0x7abd 0x440c 0x93d9 0xd2da49 0xd2be84 0xd2cea7 0xd2be3f 0xd2bfc5 0xc70f5a 0x1a52a39 0x1b1f596 0x1b1f861 0x1a49120 0x1b1f117 0x1a48fbf 0x12c594f 0x1228b43 0x1228424 0x1227d84 0x1227c9b 0x1fab7d8 0x1fab88a 0x32a626 0x2ad2 0x2a45)
terminate called throwing an exception(lldb)
因为NSString字符串是autorelease的,在多层方法传递赋值时会在中间某一层传递中释放掉。
分割线
我说NSString是autorelease这个是错误的,NSString *str = @"123",这样得到的字符串是字符串常量,并非autorelease。
这个是不对的,本意是表达在参数传递过程中NSString *str = obj;这样得到的str是autorelease的。
题外话:
immutable value 尽量使用copy属性
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。