小编Jon*_*han的帖子

自动拳击原语

我似乎无法弄清楚如何让Objective-c自动封装我的原语.

我以为我能够做到以下几点

float foo = 12.5f;
NSNumber* bar;

bar = foo;
Run Code Online (Sandbox Code Playgroud)

但是我发现我习惯了更冗长的方法

float foo = 12.5f;
NSNumber* bar;

bar = [NSNumber numberWithFloat:foo];
Run Code Online (Sandbox Code Playgroud)

我做错了还是这样做得好?

objective-c

16
推荐指数
2
解决办法
7661
查看次数

相对于缩放级别缩放MKMapView Annotations

问题 我正试图在一个圆周方向上创建一个视觉半径圆,它实际上保持固定的大小.例如.因此,如果我将半径设置为100米,当您缩小地图视图时,半径圆会逐渐变小.

我已经能够实现缩放,但是当用户操纵视图时,半径rect/circle似乎远离Pin Placemark"抖动".

我相信这在即将推出的iPhone OS 4上更容易实现,但我的应用程序需要支持3.0.

表现形式 这是一个行为的视频.

实现 注释以通常的方式添加到Mapview中,并且我在我的UIViewController子类(MapViewController)上使用了委托方法来查看区域何时更改.

-(void)mapView:(MKMapView *)pMapView regionDidChangeAnimated:(BOOL)animated{

//Get the map view
MKCoordinateRegion region;
CGRect rect;

//Scale the annotations
for( id<MKAnnotation> annotation in [[self mapView] annotations] ){

    if( [annotation isKindOfClass: [Location class]] && [annotation conformsToProtocol:@protocol(MKAnnotation)] ){
        //Approximately 200 m radius
        region.span.latitudeDelta = 0.002f;
        region.span.longitudeDelta = 0.002f;

        region.center = [annotation coordinate];

        rect = [[self mapView] convertRegion:region toRectToView: self.mapView];

        if( [[[self mapView] viewForAnnotation: annotation] respondsToSelector:@selector(setRadiusFrame:)] ){

            [[[self mapView] viewForAnnotation: annotation] setRadiusFrame:rect];

        } …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c uiview mkmapview mkannotationview

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

你如何使用NSRegularExpression的replacementStringForResult:inString:offset:template:

我有一系列我想要与正则表达式匹配的字符,并根据它们的含义将它们替换为特定的字符串.

例:

In =>"这是我要替换1 2&3的输入字符串"

Out =>"这是我要替换ONE TWO&THREE的输入字符串"

我目前通过使用空格作为分隔符拆分字符串,并分别解析每个字符串,逐步重建字符串来完成此操作.我觉得这很难看,缺乏想象力,而且有点慢.

根据Apple文档,我应该可以使用该replacementStringForResult:inString:offset:template:方法执行此操作.但是我似乎无法理解如何正确使用它.

regex cocoa-touch

14
推荐指数
2
解决办法
9435
查看次数

挂起调度队列是否会暂停其目标队列?

我想创建两个串行队列A和B.其中队列B是队列A的目标.我想在B上排队一些块,并暂停它直到我准备执行它们,但是我想继续执行块在队列A.

如果我暂停B,它还会暂停它的目标队列(队列A)吗?

我的想法是,我想安排这些特定的块(在队列B上)在稍后(未指定的)日期执行但是我不希望它们同时运行(这涉及核心数据^ _ ^)而我不这样做想要处理信号量.但是我希望队列A继续处理它的块,而B则被暂停

如果不清楚这里是一些示例代码

dispatch_queue_t queueA = dispatch_queue_create("app.queue.A");
dispatch_queue_t queueB = dispatch_queue_create("app.queue.B");

dispatch_set_target_queue( queueB, queueA );

dispatch_suspend( queueB );
/*
*   Add a bunch of blocks to queue B or A 
*   Where the ones added to A should execute immediately
*/


//Wait till blocks on queue A have finished and start up B
dispatch_resume( queueB );

dispatch_release(queueA);
dispatch_release(queueB);
Run Code Online (Sandbox Code Playgroud)

multithreading grand-central-dispatch ios

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

使用iPhone SDK访问iPhone的通话记录

我正在构建需要iPhone的Call日志中的一些数据的应用程序(只读).呼叫日志是位于" /User/Library/CallHistory/call_history.db " 的sqlite数据库.我使用越狱设备来提取日志.但是,尝试使用sqlite_open3()命令打开此位置时出现SQLITE_ERROR错误,根据库文档意味着"SQL错误或缺少数据库".在尝试调试错误时,我使用NSFileManager枚举文件夹('/ User/Library /').看起来好像它正在返回一组"已过滤"的结果,它会将"CallHistory"文件夹与其他几个文件夹一起排除.

File系统使用一系列别名来给出传统OS X文件结构的错觉,我不知道这些是否对我的结果有影响.

通话记录仅出现在设备上,而不是模拟器上.我一直无法让它在运行fireware 2.1的第一代iPhone上工作.

这是我用来测试输出的一些代码

NSDirectoryEnumerator *dirnum = [[NSFileManager defaultManager] enumeratorAtPath: @"/private/var/mobile/Library/"];

while( bar = [dirnum nextObject])
{
    //Uncomment if you don't want to log sub folders
    //[dirnum skipDescendents];

    NSLog(bar);
}
Run Code Online (Sandbox Code Playgroud)

我怀疑Apple阻止访问该目录作为其沙盒策略的一部分,但我现阶段没有证据.但是,我可以毫无问题地访问地址簿,所以我有点困惑.

谢谢

iphone cocoa-touch

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

在UINavigationBar和UIViewController上叠加UIView

基本上我想在UINavigationController下面显示一个通知,覆盖最顶层的UIViewController视图占用的区域.但是我希望背景图像向上延伸并部分覆盖UINavigationBar

成品应该如下所示 替代文字

诀窍在于我只希望将其应用于具有视图层次结构的某些视图,因此通过使用来解决问题[UIApplication keyWindow]可能不是最好的主意.另外我假设通过使用私有以外的视图UINavigationTransitionView将不会成为视图过渡动画的一部分,当我弹出这个视图时,将我的视图保留在控制器的顶部.

最顶层视图控制器的视图也没有帮助,因为它的帧终止于底部UINavigationBar,意味着箭头不会重叠UINavigationBar

建议?

谢谢

iphone uinavigationbar uiviewcontroller uinavigationcontroller

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

动画CATextLayer的foregroundColor属性

我想动画iPhone上CATextLayer的文本颜色(foregroundColor)的变化.根据文档,该属性的隐式动画在OSX 10.6上不可用,但没有提到iOS.因此,我只是假设动画必须是明确的,才能在iOS上运行.

我已经使用了更改了支持层类+(class)layerClass,并在UIView init方法中为属性设置了初始值.文本显示正常,以及我应用的所有属性(阴影,字体等),但动画没有任何影响.

下面是我的动画方法,我从KVO观察方法调用,以便视图在观察到的属性发生变化时提醒用户.

-(void) animateTextChange{
    animation = [CABasicAnimation animationWithKeyPath:@"foregroundColor"];

    [animation setFromValue:[[UIColor blackColor] CGColor]];

    [animation setToValue:[[UIColor whiteColor] CGColor]];

    [animation setDuration:2.0f];

    [[self layer] addAnimation:animation
                        forKey:@"foregroundColor"
 ];
}
Run Code Online (Sandbox Code Playgroud)

一如既往地谢谢.

core-animation calayer ios

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

VBScript(经典)ASP中的单例模式

我刚刚创建了一个FirePHP服务器端库的经典ASP版本,它可以与常规的旧FirePHP控制台一起使用.

看看Github项目

但是在我的实现中,我必须创建一个全局来存储类实例.

如果甚至可以创建静态方法,我不知道如何使用这种语言中的单例模式.

oop vbscript singleton design-patterns asp-classic

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