小编pse*_*bos的帖子

什么时候释放自动释放的对象?

我是objective-c的新手,我正在努力理解内存管理以使其正确.

在阅读了
针对Cocoa的优秀内存管理编程指南之后,我唯一担心的是在iphone/ipod应用程序中实际释放自动释放的对象.我的理解是在运行循环结束时.但是什么定义了应用程序中的运行循环?

所以我想知道下面的代码是否正确.假设一个对象

@implementation Test

- (NSString *) functionA {
    NSString *stringA;
    stringA = [[[NSString alloc] initWithString:@"Hello"] autorelease]
    return stringA;
}

- (NSString *) functionB {
    NSString *stringB;
    stringB = [self functionA];
    return stringB;
}

- (NSString *) functionC {
    NSString *stringC;
    stringC = [self functionB];
    return stringC;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    NSString* p = [self functionC];
    NSLog(@"string is %@",p);
}

@end
Run Code Online (Sandbox Code Playgroud)

这段代码有效吗?

从Apple文本据我所知,从NSString的返回泛函是在范围内有效functionB.我不确定它在functionCviewDidLoad中是否有效. …

iphone cocoa-touch memory-management objective-c autorelease

16
推荐指数
1
解决办法
3912
查看次数

变量是否应该被释放?iphone-SDK

在下面的一段代码中(来自一本书),数据NSDictionary*数据; 在标题中定义(没有属性).

在控制器的viewDidLoad中,会发生以下情况:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSArray *keys = [NSArray arrayWithObjects:@"home", @"work", nil];
    NSArray *homeDVDs = [NSArray arrayWithObjects:@"Thomas the Builder", nil];
    NSArray *workDVDs = [NSArray arrayWithObjects:@"Intro to Blender", nil];
    NSArray *values = [NSArray arrayWithObjects:homeDVDs, workDVDs, nil];
    data = [[NSDictionary alloc] initWithObjects:values forKeys:keys];

}
Run Code Online (Sandbox Code Playgroud)

由于我对Objective-c真的很新,有人可以向我解释为什么在退出函数之前我不必保留变量键,homeDVD,workDVD和值?我希望之前的数据分配类似于:

[keys retain];
[homeDVDs retain];
[workDVDs retain];
[values retain];
Run Code Online (Sandbox Code Playgroud)

或不?InitWithObjects是否(递归地)将所有对象复制到新表中?

假设我们没有最后一行(数据分配),我们应该释放所有NSArrays退出函数之前(或者我们可以安全地假定所有NSArrays将被自动释放,因为没有页头为每一个?)

谢谢!!!!

iphone cocoa-touch

2
推荐指数
1
解决办法
118
查看次数

使用unix shell比较包含非ascii字符的文件内容的最佳方法

我有以下文件:

~$ od file.txt 
0000000 000012
0000001
Run Code Online (Sandbox Code Playgroud)

我希望能够在bash脚本中确保文件包含这些内容.我想避免perl,并希望使用标准的unix工具,包括od/sed/awk/tr等.

你能推荐一个干净利落的方式吗?

bash shell awk sed

1
推荐指数
1
解决办法
572
查看次数