小编Car*_*son的帖子

如何为单个文件启用ARC

我想将一个使用ARC编写的Objective-C类带入一个旧项目.互联网为如何为您的项目启用ARC提供了许多参考,然后为单个文件禁用它,但我想做相反的事情.

我想保留项目,即使用手动引用计数,然后为新文件启用ARC.(我的搜索在这里失败了.)

这可能吗?怎么样?

objective-c automatic-ref-counting

79
推荐指数
2
解决办法
2万
查看次数

拆分RACSignal以消除状态

我正在使用ReactiveCocoa更新UILabel一个UIProgressView倒计时:

NSInteger percentRemaining = ...;
self.progressView.progress = percentRemaining / 100.0;

__block NSInteger count = [self.count];

[[[RACSignal interval:0.05 onScheduler:[RACScheduler mainThreadScheduler]]
    take: percentRemaining]
    subscribeNext:^(id x) {
        count++;
        self.countLabel.text = [NSString stringWithFormat:@"%d", count];
        self.progressView.progress = self.progressView.progress - 0.01;
    } completed:^{
        // Move along...
    }];
Run Code Online (Sandbox Code Playgroud)

这种方法运行得很好但是,我对count变量或者读取值都不是特别满意,self.progressView.progress以便减少它.

我觉得我应该能够直接使用RAC宏来吐出信号并绑定属性.就像是:

RACSignal *baseSignal = [[RACSignal interval:0.05 onScheduler:[RACScheduler mainThreadScheduler]]
                            take: percentRemaining]

RAC(self, countLabel.text) = [baseSignal
                                  map: ...
                                  ...

RAC(self, progressView.progress) = [baseSignal
                                        map: ...
                                        ...
Run Code Online (Sandbox Code Playgroud)

...揭示了我被困的地方.我不能完全理解如何编写RACSignal …

cocoa-touch objective-c reactive-programming reactive-cocoa racsignal

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

适用于Mac的Scheme Editor/IDE

我已经开始学习计算机程序的结构和解释.尽职尽责,我已经安装了mit-scheme.我现在需要的是Mac的编辑器/ IDE,它可以处理缩进和平衡括号(或者如何最好地配置打包工具的建议).

有什么建议?TIA

macos scheme

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

Celery-Django作为守护进程:未找到设置

按照本教程,我现在有一个Celery-Django应用程序,如果我用这个命令启动worker,它工作正常:celery -A myapp worker -n worker1.%h

在我的Django settings.py中,我为Celery设置了所有参数(消息代理的IP等等).一切都运作良好.

我现在的下一步是将此应用程序作为守护程序运行.所以我已经遵循了第二个教程,一切都很简单,除了现在,我没有加载settings.py中包含的Celery参数.例如,消息代理IP设置为127.0.0.1但在我的settings.py中,我将其设置为另一个IP地址.

在教程中,他们说:

确保定义Celery应用程序实例的模块还为DJANGO_SETTINGS_MODULE设置默认值,如Django的第一步中的Django项目示例所示.

所以我确定了.我在/ etc/default/celeryd这个:

导出DJANGO_SETTINGS_MODULE ="myapp.settings"

仍然没有工作...所以我也,在/etc/init.d/celeryd中有这一行,再次无法正常工作.我不知道该怎么办了.有人有线索吗?

编辑:这是我的celery.py:

from __future__ import absolute_import

import os
from django.conf import settings
from celery import Celery

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')

app = Celery('myapp')

# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request)) …
Run Code Online (Sandbox Code Playgroud)

python django daemon celery

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

添加双击到UICollectionView; 要求单击才能失败

对于这个问题有类似的问题,我试图在我的UICollectionView实例中添加双击手势识别器.

我需要阻止默认单击调用UICollectionViewDelegate方法collectionView:didSelectItemAtIndexPath:.

为了实现这一点,我直接从Apple的Collection View Programming Guide(清单4-2)实现代码:

UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
NSArray* recognizers = [self.collectionView gestureRecognizers];

// Make the default gesture recognizer wait until the custom one fails.
for (UIGestureRecognizer* aRecognizer in recognizers) {
   if ([aRecognizer isKindOfClass:[UITapGestureRecognizer class]])
      [aRecognizer requireGestureRecognizerToFail:tapGesture];
}

// Now add the gesture recognizer to the collection view.
tapGesture.numberOfTapsRequired = 2;
[self.collectionView addGestureRecognizer:tapGesture];
Run Code Online (Sandbox Code Playgroud)

此代码无法按预期工作:tapGesture双击时触发,但不会阻止默认单击,并且didSelect...仍会调用委托的方法.

在调试器中单步执行会显示if条件[aRecognizer isKindOfClass:[UITapGestureRecognizer class]]永远不会计算为true,因此 …

uigesturerecognizer uitapgesturerecognizer uicollectionview

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

如何在PHP中使用对象键创建类似数组的数据结构?

我想用PHP创建带有对象键的数组,即:

<?php
$keyObject   = new KeyObject;
$valueObject = new ValueObject;

$hash = array($keyObject => $valueObject);
Run Code Online (Sandbox Code Playgroud)

但是,这会引发错误.数组可能只有整数或字符串键.我最终不得不这样做:

$hash = array(
    'key'   => $keyObject,
    'value' => $valueObject);
Run Code Online (Sandbox Code Playgroud)

这有效,但它并不像我想的那样整洁.有没有更好的办法?(也许是我失踪的SPL的东西......)

TIA

php map data-structures

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

如何提示使用UIView子类进行编译

我有一个UIViewController的子类,负责单个UIWebView.

由于这是一个简单的例子,我重写-(void)loadView,实例化UIWebView并为其分配控制器的view属性:

- (void)loadView 
{
    UIWebView *wv = [[[UIWebView alloc] initWithFrame:self.frame] autorelease];
    // other configuration here...  
    self.view = wv;
}
Run Code Online (Sandbox Code Playgroud)

这是好的,直到我调用UIWebView的方法.例如...

[self.view loadHTMLString:HTMLString baseURL:baseURL];
Run Code Online (Sandbox Code Playgroud)

...导致编译器警告......

warning: 'UIView' may not respond to '-loadHTMLString:baseURL:'
Run Code Online (Sandbox Code Playgroud)

...因为该view财产被宣布为UIView.

现在警告很容易通过演员来解决......

[(UIWebView *)self.view loadHTMLString:HTMLString baseURL:baseURL];
Run Code Online (Sandbox Code Playgroud)

...但我想做的是在界面中提供正确的类型提示.我尝试覆盖该view属性,MyViewController.h但这也扰乱了编译器:

warning: property 'view' type does not match super class 'UIViewController' property type
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉编译器(和我的伙伴)这就是我正在做的事情,而且我知道这就是我正在做的事情,这一切都没关系?(如果不是,我想我会坚持演员.)

TIA

编辑:我尝试按照marcus.ramsden的回答重新声明视图属性:这消除了警告(以及对演员的需要)但是停止了视图出现!我不确定为什么这应该是因为控制器在被要求时仍然会返回一个UIView(子类)...

iphone uiwebview uiviewcontroller subclassing ios

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