小编Sul*_*han的帖子

@warn_unqualified_access和@warn_unused_result之间的区别?

任何人都可以用一个例子来解释 warn_unqualified_accesswarn_unused_result

swift

9
推荐指数
2
解决办法
1709
查看次数

swift lazy var with throw init behavior

我不确定它是不是一个错误,或者它确实是应该如何运作的?

class A {
    init() throws { }
}

class B {
    lazy var instance = A()
}
Run Code Online (Sandbox Code Playgroud)

这段代码使用XCode 9和最新Swift版本编译没有错误,并且除非Class A init()真正抛出,否则工作完美,然后lazy var为空指针.但是不应该以某种方式编译这段代码?

throw lazy-initialization swift

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

iOS - 使用3G随机"无法连接到主机"

我正在开发一个iOS应用程序,它可以作为商务服务器的瘦客户端.有很多请求发送到服务器,下载了大量数据.

我不使用任何花哨的请求框架,只是NSURLConnection与委托异步.

该应用程序通常适用于WiFi和3G BUT

一些用户在使用3G时会报告随机断开连接(在美国).所有请求都是okey,但偶尔请求失败并显示"无法连接到主机"(-1004)错误.

这会对用户体验产生很大影响.

一些事实:

  1. 它不会发生在wifi上
  2. 用户报告说使用3G时其他应用程序不会发生这种情况.
  3. 这不是超时问题,启动连接后错误出现0.3-1.0秒.
  4. 我们无法使用traceroute重现问题.
  5. 使用SCNetworkReachability主机似乎是可以访问的(我知道此API的限制).

问题问题可能是什么原因?什么连接属性可以与3G和WiFi不同?我该怎么调试呢?

目前我看到的唯一解决方案是,如果先前的请求失败,则尝试再次发送请求.但是,我想首先找到问题的原因.

编辑问题可能是由我们的一个路由器引起的.IT人员仍在检查问题.

nsurlconnection 3g ios

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

是对PRESViewController的ARC内存管理:动画:完成:在iOS 6.x中被破坏了吗?

我的视图控制器通过该presentViewController:animated:completion:方法呈现视图.视图很好.

然后我忽略了这个视图并重新呈现它并得到以下崩溃:

*** -[WebBrowser isKindOfClass:]: message sent to deallocated instance 0x1f640ac0
Run Code Online (Sandbox Code Playgroud)

我的代码使用的是ARC.这是我的WebBrowser类的代码,一个简单的嵌入式浏览器.

WebBrowser.h:

@interface WebBrowser : ITViewController <UIWebViewDelegate, UIAlertViewDelegate>

@property (nonatomic, strong) NSString *URL;
@property (nonatomic, weak) IBOutlet UIWebView *webView;
@property (nonatomic, weak) IBOutlet UIActivityIndicatorView *spinner;

- (id)initWithURL:(NSString *)URL;
- (IBAction)dismissView:(id)sender;

@end
Run Code Online (Sandbox Code Playgroud)

WebBrowser.m:

@implementation WebBrowser

- (id)initWithURL:(NSString *)URL_ {
    self = [super initWithNibName:@"MyNib" bundle:nil];
    if (self) {
        self.URL = URL_;
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.webView.delegate = self;

    if (self.URL) {
        [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL …
Run Code Online (Sandbox Code Playgroud)

modalviewcontroller ios ios5 ios6

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

在块中施放零

今天我只是快速玩积木,我遇到了错误:

NSString *(^testBlock)(int) = ^(int option) {
    if (option == 1) return @"ONE";
    if (option == 2) return @"TWO";
    return nil;
};
NSLog(@"OUTPUT: %@", testBlock(4));
Run Code Online (Sandbox Code Playgroud)
Return type 'void *' must match previous return type 'NSString *' when block literal has unspecified explicit return type
Run Code Online (Sandbox Code Playgroud)

因为我真的想要返回nil,如果没有输入"1"或"2",我决定简单地使用以下命令将最终返回值转换回NSString:

NSString *(^testBlock)(int) = ^(int option) {
    if (option == 1) return @"ONE";
    if (option == 2) return @"TWO";
    return (NSString *) nil;
};
Run Code Online (Sandbox Code Playgroud)

这很好用,我只是好奇,如果这是正确的解决方案,甚至是不好的练习,因为我从来没有考虑过铸造零呢?

iphone cocoa-touch objective-c objective-c-blocks

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

'太多打开文件'错误xcode

这很奇怪.我不确定为什么我会收到这个错误.我已经删除了派生数据,我不确定这个错误来自哪里.

这是我第一次看到它.它曾经出现在运行我的模拟器时,现在它在我的手机上运行时出现.

在此输入图像描述

在此输入图像描述

xcode file out-of-memory

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

在Swift项目中正确使用Obj-C库

编辑:我认为它可能是关于从objective-c库加载.xib并在swift的视图控制器上显示它


我一直试图在swift应用程序中使用https://github.com/promet/PRAugmentedReality库.

它与obj-c完美配合,如: 在此输入图像描述

但当我将它连接到快速项目时,它开始像这样: 在此输入图像描述

下面你可以看到我将这个库集成到我的swift项目中的步骤,我的swift项目的代码以及objective-c和swift项目的下载链接.这里也是PR增强现实框架的YouTube视频:

链接1:使用入门 - > https://www.youtube.com/watch?v=fdN0XAoZXOY

链接2:内部演练 - > https://www.youtube.com/watch?v=Xmx-0OnzTPY

Swift项目步骤:

  1. 使用名为demoAR的Xcode V7.2.1(7C1002)创建单个视图应用程序
  2. 我从目标添加了Foundation.framework,CoreGraphics.framework和UIKit.framework - > demoAR - > Build Phases - > Link Binary with Libraries
  3. 然后,File - > New Target - > Cocoa Touch Framework并单击Next
  4. 创建了一个具有以下属性的Target:产品名称:PRAR,语言:Objective-C和组织标识符:com.timur.PRAR然后我单击Finish 在此输入图像描述
  5. 我在PRAR下创建了另一个组并将其命名为"Classes",然后我从框架的Classes文件夹中复制文件并将它们添加到PRAR/Classes文件夹中.
  6. 我将框架目标成员的每个.h文件更改为"公共"

项目清单

  1. 然后我将头文件导入我的桥接文件(PRAR.h),就像这样

    #import <PRAR/ARSettings.h>
    #import <PRAR/PRARManager.h>
    #import <PRAR/ARController.h>
    #import <PRAR/ARObject.h>
    #import <PRAR/ARRadar.h>
    #import <PRAR/LocationMath.h>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在我的swift项目中运行此框架所做的其余工作仍然在我的ViewController.swift文件中,例如:

    import UIKit
    import PRAR
    var prARManager = PRARManager()
    let x: Int32 = AR_VIEW_TAG
    let y = Int(x)
    class ViewController: …
    Run Code Online (Sandbox Code Playgroud)

xcode objective-c augmented-reality ios swift

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

为什么我收到“实体 X 不符合键值编码”?

当我运行以下代码时:

    let saveAction = UIAlertAction(title: "Save",
                                   style: .default) {
    [unowned self] action in
    guard let textField = alert.textFields?.first,
    let mapName = textField.text else {
    return
    }
    var newCoordinate = NSEntityDescription.insertNewObject(forEntityName: "Coordinates", into: managedObjectContext)

    var newMap = NSEntityDescription.insertNewObject(forEntityName: "MapNames", into: managedObjectContext)

    newCoordinate.setValue(23, forKey: "latitude")
    newCoordinate.setValue(21, forKey: "longitude")
    newMap.setValue(mapName, forKey: "mapname")

    do
    {
    try self.appDelegate.saveContext()
    print("SAVED")
    }
    catch
    {
    }

    var request = NSFetchRequest<NSFetchRequestResult>(entityName: "Coordinates")
    request.returnsObjectsAsFaults = false

    do
    {
    var results = try managedObjectContext.fetch(request)

        if results.count > 0 {
        for result …
Run Code Online (Sandbox Code Playgroud)

core-data ios swift

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

Xcode添加了蓝色的文件夹,相关的文件没有编译

从Xcode项目右键单击并Add File to "projectName"在那里我创建了一个NewFolder "ABCD"名称并添加到相同的"ABCD"空文件夹到项目的蓝色,我期望它在黄色,我在Blue Color文件夹文件中添加的文件没有编译在X-Code中,在Blue Color文件夹中添加的所有文件都说在编译代码后找不到文件.

有没有为什么默认,我添加的文件夹是与项目相关的链接?

这个问题对我来说非常奇怪,您的反馈非常有帮助.

xcode objective-c ios

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

具有代码覆盖率的UIAutomation

我目前正在自动化我们对jenkins的iOS测试.到目前为止,我没有运行单元测试,将OCUnit转换为JUnit并以Cobertura格式生成代码覆盖(大量的谷歌搜索,但没有硬问题).

但是,在创建UIAutomation工作时,我被困住了.测试成功运行(instruments从命令行调用).生成junit报告很棘手,但可能.问题是在运行UIAutomation时,不会生成代码覆盖文件.

是否有可能产生它们?如果没有,你能解释一下原因吗?

到目前为止我尝试了什么:

  1. 将UIAutomation附加到iOS模拟器上已经运行的应用程序.
    • 这似乎不可能.正在运行的应用程序被仪器杀死,并且重新启动新实例或打印出神秘的错误消息.
  2. 使用osascript和的组合在js脚本结束时退出模拟器UIAHost. performTaskWithPathArgumentsTimeout.
    • 应用程序优雅地结束但没有生成覆盖.

编辑 使用不同的框架进行一些测试后,我意识到退出模拟器是不够的,你必须明确地exit()从应用程序调用.使用UI自动化这有点棘手,但您可以声明一个应用程序,例如my-app://exit,通过MobileSafari使用它来调用它UIAHost.performTaskWithPathArgumentsTimeout.将检查这是否足以生成文件.

ios ios-ui-automation

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