小编est*_*art的帖子

AutoreleasePool没有捕获断点,没有警告,没有报告漏洞

如果没有自动释放池,我正在尝试捕获方案.
这是我的测试应用.

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [self performSelectorInBackground:@selector(bgOperation:) withObject:nil];
}

- (void)bgOperation:(id)obj
{
    NSString *string [[[NSString alloc] init] autorelease];
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试设置断点objc_autoreleaseNoPool.
我试过使用Instruments/Leaks进行分析.
OSX 10.7.5 XCode 4.3.3目标10.6,AutomaticRefCounting = NO,GarbageCollection =不支持.

我知道NSApplication包含它自己的自动释放池.但我的理解是每次调用performSelectorInBackground:都需要它自己的自动释放池.

从建议更新:

在main.m 尝试了这个.. 没有运气.

int main(int argc, char *argv[])
{
    NSString *junk = [[[NSString alloc]init]autorelease];
    return NSApplicationMain(argc, (const char **)argv);
}
Run Code Online (Sandbox Code Playgroud)

而这..
在我的appDelegate中,也没有结果.

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [NSThread detachNewThreadSelector:@selector(bgOperation:)
                             toTarget:self
                           withObject:nil];
}
Run Code Online (Sandbox Code Playgroud)

而这......
在我的主题中使用pthreads

void *doJunk(void *ptr){
  NSString *junk = [[[NSString alloc]initWithString:@"string with no pool"]autorelease];
  NSLog(@"%@", junk);
  pthread_exit(NULL);
} …
Run Code Online (Sandbox Code Playgroud)

xcode cocoa memory-management objective-c

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

从Apple示例"创建块"中阻止语法错误

使用来自docs的apple示例

float (^oneFrom)(float);


oneFrom = ^(float aFloat) {

  float result = aFloat - 1.0;

  return result;

};
Run Code Online (Sandbox Code Playgroud)

我收到两个错误:

  1. 使用不同类型重新定义'oneFrom':'int'vs'float(^)(float)'
  2. 类型说明符缺失,默认为'int'

也来自doc ..

如果没有显式声明块表达式的返回值,则可以从块的内容中自动推断出它.如果推断返回类型并且参数列表为void,那么您也可以省略(void)参数列表.如果或当存在多个return语句时,它们必须完全匹配(必要时使用cast).

objective-c objective-c-blocks

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

从 python setup.py sdist 输出的打印路径

有没有办法获取setup.py sdist构建的tar文件的路径?我知道它在哪里,但我希望编写脚本而不必ls dist/等。如果有一个 distutils 也分配了它的变量,或者一个将返回它的函数,我也可以覆盖该命令。

python distutils setup.py

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

Objective-C注册类Runtime Reference

所以我上课了MyClass.它的名字是其中的一部分char * myclasses[].我想使用objc运行时api来分配它.
1)这是最好的方法吗?我的目标是不分配10或15个ViewControllers,直到它们实际需要使用,并且还没有巨大的switch语句来创建它们.

Class aClass = NSClassFromString ( [NSString stringWithUTF8String:myclasses[1]] );
id myClass = class_createInstance(aClass, 0);
Run Code Online (Sandbox Code Playgroud)

我正在努力理解注册课程..

2)因为我不是在运行时创建一个新类(只是分配),所以我不应该注册它,对吗?
3)班级注册通常如何运作?(随意指点我某处的文件).

class objective-c objective-c-runtime

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

带有autolayout的iOS7视图排在TabBar之上

我知道我知道..另一个iOS7问题.
我在UINavigationController中有一个视图,它被添加到TabBarController中.在iOS6中,我使用垂直约束'底部空间来超级视图,默认',这将给我10个关于TabBar的像素.
这个相同的约束在iOS 7中似乎不起作用.TabBar不再被视为超级视图吗?我应该使用另一种约束吗?

uitabbarcontroller uinavigationcontroller autolayout ios7

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