小编pro*_*rmr的帖子

你如何直接链接到应用商店应用更新页面?

我正在完成一个iPhone应用程序.我正在使用外部服务器通知用户我的应用程序何时可以使用更新,并允许他们从应用程序中单击以直接进入应用程序商店的更新.问题是,我似乎无法弄清楚直接转到更新的链接格式.我找到了一种使用viewsoftwareUpdate的旧方法(在这里的另一篇文章中提到),但它都与过时的phobos链接有关,我似乎无法让它为我工作.我目前正在使用简单的格式直接链接到应用程序:itms-apps://itunes.com/apps/"appname",我认为有一种方法可以改变这种格式以进入应用程序更新而不是主应用页面?

这看起来像一个非常基本的功能,所以我很惊讶我找不到任何东西.

此外,是否有人知道如何直接链接到应用商店中用户自己的更新选项卡?不是特定于一个应用程序,而是更新选项卡,显示可供下载的所有更新.

iphone hyperlink ios

10
推荐指数
2
解决办法
5338
查看次数

如何计算UISegmentedControl段的正确宽度?

我正在尝试使用UISegmentedControl,但无法计算段的宽度.该控件使得段的宽度相同,对于某些标题不起作用,如下所示:

http://morrisphotoart.com/tmp/Scr​​eenshot2011-07-13_21.17.33.png

如果我知道哪种字体并调用setWidth:forSegmentAtIndex:方法,我可以编写代码来计算段宽度,但是如何获得字体呢?或者还有另一种方式吗?

左侧和中间段的标题不固定,因此我无法对宽度进行硬编码.

iphone uisegmentedcontrol uifont ios

10
推荐指数
3
解决办法
1万
查看次数

CLLocation提升精度

我有一个位置服务应用程序,其中提供了用户的高程.但我发现CLLocationManager提供的高程精度非常不准确.当我两次测试相同的两个点时,有时高程差是四十英尺,有时是一百.有什么办法可以提高CLLocation的垂直精度,还是有不同的方法来获取用户的高程(第三方库)?我已经尝试检查CLLocationManager提供的newLocation的verticalAccuracy属性,如果它还不够,则抛出它,但即使它足够"准确",它仍然通常不准确.谢谢你的时间!

现在我正在使用:

if([newLocation verticalAccuracy] < 30) {
    if(isCustomary)
        altitudeLabel.text = [NSString stringWithFormat:@"%.2f feet", ([newLocation altitude] * 3.2808399)];
    else
        altitudeLabel.text = [NSString stringWithFormat:@"%.2f meters", [newLocation altitude]];
}
Run Code Online (Sandbox Code Playgroud)

该代码存在问题:通常,verticalAccuracy永远不会低于30,而当它完成时,它甚至还不够准确; 我测试了在我家附近行走的代码(一个故事),它说海拔高度变化到19英尺,我确信这不是真的.

geolocation core-location cllocationmanager ios altitude

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

iOS自定义键盘 - 相机无法正常工作

我想创建一个自定义键盘,作为条形码扫描仪.我已经完成了整个编码,但输出并不像预期的那样:我被要求获得相机权限(第一次),但相机不向视图发送视频.

我认为,出于安全考虑,可能存在使用键盘的一些限制?!?

1.)打开手电筒

-(void) turnFlashOn
{
    AVCaptureDevice *flashLight = [AVCaptureDevice
                                   defaultDeviceWithMediaType:AVMediaTypeVideo];
    if([flashLight isTorchAvailable] && [flashLight
                                         isTorchModeSupported:AVCaptureTorchModeOn])
    {
        BOOL success = [flashLight lockForConfiguration:nil];
        if(success){
            NSError *error;
            [flashLight setTorchMode:AVCaptureTorchModeOn];
            [flashLight setTorchModeOnWithLevel:1.0 error:&error];
            NSLog(@"Error: %@", error);
            [flashLight unlockForConfiguration];
            NSLog(@"flash turned on -> OK");

        }
        else
        {
            NSLog(@"flash turn on -> ERROR");
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

这给了我这个日志输出,但闪存没有任何反应:

Error: (null)
flash turned on -> OK
Run Code Online (Sandbox Code Playgroud)

2.)扫描条形码(viewDidLoad的一部分)

    // SCANNER PART
self.captureSession = [[AVCaptureSession alloc] init];
AVCaptureDevice *videoCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = nil;
AVCaptureDeviceInput *videoInput = …
Run Code Online (Sandbox Code Playgroud)

keyboard barcode ios avcapturesession ios8

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

为什么使用字符串常量vs枚举常量?

我有一个与设计相关的问题.

我已经看到UIApplication类有这种标志:

UIKIT_EXTERN NSString *const UIApplicationDidEnterBackgroundNotification
UIKIT_EXTERN NSString *const UIApplicationWillEnterForegroundNotification
UIKIT_EXTERN NSString *const UIApplicationDidFinishLaunchingNotification;
UIKIT_EXTERN NSString *const UIApplicationDidBecomeActiveNotification;
UIKIT_EXTERN NSString *const UIApplicationWillResignActiveNotification;
UIKIT_EXTERN NSString *const UIApplicationDidReceiveMemoryWarningNotification;
Run Code Online (Sandbox Code Playgroud)

而另一方面,UITableView类声明了如下结构:

typedef enum {
    UITableViewScrollPositionNone,        
    UITableViewScrollPositionTop,    
    UITableViewScrollPositionMiddle,   
    UITableViewScrollPositionBottom
} UITableViewScrollPosition;  
Run Code Online (Sandbox Code Playgroud)

一个用于通知,另一个用于定义对象的类型.我相信这两个是设计选择,以"标记"一些相关对象,并在运行时根据该标志进行分类.

假设我想创建一个需要标记的对象工厂.在下面的图像中,我想要每个部分和小部件的枚举或ID.任何小部件如何通信或"调用"另一个小部件?ej [[Containter sharedInstance] presentWidget:?? forSection:?? withInfo:(ID)信息];

在此输入图像描述

是否有更深入或更准确的理由选择其中一个?谢谢你的帮助.

design-patterns objective-c ios

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

如何自定义MKPolyLineView以绘制不同的样式线

我想自定义在MKMapView上绘制的线条以显示路线,以便线条具有边框颜色和填充颜色.与此类似,它有一个黑色边框,并填充另一种颜色:

蓝色线条与黑色边框

我目前只是返回MKPolyLineView对象,mapView:viewForOverlay:从中可以很好地处理普通线条.文档说MKPolyLineView不是子类,所以我应该继承MKOverlayView并实现我自己的drawMapRect?或者我应该继承MKOverlayPathView?或者创建MKPolylineView的替代品?

编辑 - 我要问的是:在哪里放置自己的Quartz绘图代码以绘制自己的注释/叠加?目前我已经创建了MKOverlayView的子类并实现了我自己的drawMapRect:zoomScale:inContext:以这种方式绘制叠加层非常容易,但这是最好的解决方案吗?

iphone cocoa-touch overlay mkmapview ios

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

在objective-c中只从磁盘读取一部分文件

我正在使用NSInputStream读取一个非常大的文件,并将它们以数据包的形式发送到设备.如果接收方没有收到数据包,我可以使用数据包编号发送回发送方,表示丢失数据包的起始位置(以字节为单位).

我知道NSInputStream无法回绕并抓取数据包,但是有没有其他方法可以获取所请求的字节范围而无需将整个大文件加载到内存中?

如果有[NSData dataWithContentsOfFileAtPath:inRange]方法,那将是完美的.

iphone file objective-c nsdata

8
推荐指数
2
解决办法
4106
查看次数

分配的对象可能泄漏

使用XCode的构建和分析我看到我的代码中有内存泄漏:

- (NSString *) doIt
{
    NSString *var = [[NSString alloc] init];

    return var;
}
Run Code Online (Sandbox Code Playgroud)

这当然是我问题的简化片段

我在哪里发布对象?

memory-leaks objective-c

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

我应该在返回对象之前发送保留或自动释放吗?

我以为我在这里做的是正确的,但我从构建和分析中得到了一些警告,所以现在我不太确定.我的假设是(a)我从函数中获取的对象(在这种情况下为dateFromComponents:)已经设置为自动释放,(b)我应该从函数返回的对象设置为autorelease.因此,在将其返回给调用者之前,我不需要发送自动释放或保留dateFromComponents的结果:是对的吗?

作为旁注,如果我将我的函数从newTimeFromDate重命名为:gnuTimeFromDate,分析器不会对此函数发出任何警告.是所有"new*"方法返回保留而不是自动释放的对象的约定?

Cocoa的内存管理编程指南中,它说"收到的对象通常保证在收到它的方法中保持有效",并且"该方法也可以安全地将对象返回给它的调用者".这让我相信我的代码是正确的.

但是,在Cocoa的内存管理中,它说"假设通过任何其他方法获得的对象的保留计数为1并驻留在自动释放池中.如果要保持超出当前执行范围,则必须保留它. " 这让我觉得我需要在返回NSDate对象之前进行保留.

我正在使用针对iPhone SDK 3.1.2的10.6.2上的Xcode 3.2.1进行开发.

构建/分析输出的屏幕截图http://nextsprinter.mggm.net/Screen%20shot%202009-11-15%20at%2008.33.00.png

如果您在阅读屏幕截图时遇到问题,请输入以下代码:

//============================================================================
// Given a date/time, returns NSDate for the specified time on that same day
//============================================================================
+(NSDate*) newTimeFromDate:(NSDate*)fromDate 
       Hour:(NSInteger)hour 
     Minute:(NSInteger)min 
     Second:(NSInteger)sec
{
 NSCalendar* curCalendar = [NSCalendar currentCalendar];
 const unsigned units    = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
 NSDateComponents* comps = [curCalendar components:units fromDate:fromDate];
 [comps setHour:   hour];
 [comps setMinute: min];
 [comps setSecond: sec];

 return [curCalendar dateFromComponents:comps];
}
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch memory-management objective-c

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

iOS无法识别的选择器发送到Swift中的实例

当用户按下UIButton时,我遇到了问题.我一直收到错误说:无法识别的选择器发送到实例

override func viewDidLoad() {
    super.viewDidLoad()

    button.addTarget(self, action: "buttonClick", forControlEvents: UIControlEvents.TouchUpInside)
    button.setTitle("Print", forState: UIControlState.Normal)
    button.font = UIFont(name: "Avenir Next", size: 14)
    button.backgroundColor = UIColor.lightGrayColor()
    self.view.addSubview(button)
}

func buttonClick(Sender: UIButton!)
{
    myLabelInfo.text = "Hello"
}
Run Code Online (Sandbox Code Playgroud)

对于Swift方法,例如func buttonClick(Sender: UIButton)传递给addTarget选择器方法的正确字符串是什么?是"buttonClick","buttonClick:","buttonClickSender:"还是其他什么?

ios swift

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