我想构造一个内容为3 NSInteger类型的NSData对象,并使用以下代码:
- (void)test
{
NSInteger i = 12, j = 2000, k = 2;
NSMutableData *md = [NSMutableData dataWithCapacity:10];
[md appendBytes:&i length:sizeof(i)];
[md appendBytes:&j length:sizeof(j)];
[md appendBytes:&k length:sizeof(k)];
NSLog(@"data is %@",md);
}
Run Code Online (Sandbox Code Playgroud)
但是当我记录它时,它告诉我:
data is <0c000000 d0070000 02000000>
Run Code Online (Sandbox Code Playgroud)
我将这些翻译成十进制,这些数字是201326592,3490119680,33554432.所以我不知道为什么这些数字,我该怎么办?谢谢.
现在它没有ARC中的复制属性,所以当我想复制一个对象时该怎么做?然后我写了一个测试代码:
test.h
@property (strong, nonatomic) NSMutableString *str1;
@property (strong, nonatomic) NSMutableString *str2;
Run Code Online (Sandbox Code Playgroud)
test.m
self.str1 = [[NSMutableString alloc] initWithString:@"Hello"];
self.str2 = [self.str1 copy];
[self.str2 appendString:@"World"];
NSLog(@"str1:%@,str2:%@",self.str1,self.str2);
Run Code Online (Sandbox Code Playgroud)
当我跑,它崩溃了:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to mutate immutable object with appendString:'
Run Code Online (Sandbox Code Playgroud)
那么,我该怎么办?