任何人都可以用一个例子来解释 warn_unqualified_access和warn_unused_result
我不确定它是不是一个错误,或者它确实是应该如何运作的?
class A {
init() throws { }
}
class B {
lazy var instance = A()
}
Run Code Online (Sandbox Code Playgroud)
这段代码使用XCode 9和最新Swift版本编译没有错误,并且除非Class A init()真正抛出,否则工作完美,然后lazy var为空指针.但是不应该以某种方式编译这段代码?
我正在开发一个iOS应用程序,它可以作为商务服务器的瘦客户端.有很多请求发送到服务器,下载了大量数据.
我不使用任何花哨的请求框架,只是NSURLConnection与委托异步.
该应用程序通常适用于WiFi和3G BUT
一些用户在使用3G时会报告随机断开连接(在美国).所有请求都是okey,但偶尔请求失败并显示"无法连接到主机"(-1004)错误.
这会对用户体验产生很大影响.
一些事实:
SCNetworkReachability主机似乎是可以访问的(我知道此API的限制).问题问题可能是什么原因?什么连接属性可以与3G和WiFi不同?我该怎么调试呢?
目前我看到的唯一解决方案是,如果先前的请求失败,则尝试再次发送请求.但是,我想首先找到问题的原因.
编辑问题可能是由我们的一个路由器引起的.IT人员仍在检查问题.
我的视图控制器通过该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) 今天我只是快速玩积木,我遇到了错误:
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)
这很好用,我只是好奇,如果这是正确的解决方案,甚至是不好的练习,因为我从来没有考虑过铸造零呢?
编辑:我认为它可能是关于从objective-c库加载.xib并在swift的视图控制器上显示它
我一直试图在swift应用程序中使用https://github.com/promet/PRAugmentedReality库.
下面你可以看到我将这个库集成到我的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项目步骤:

然后我将头文件导入我的桥接文件(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)在我的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)当我运行以下代码时:
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) 从Xcode项目右键单击并Add File to "projectName"在那里我创建了一个NewFolder "ABCD"名称并添加到相同的"ABCD"空文件夹到项目的蓝色,我期望它在黄色,我在Blue Color文件夹文件中添加的文件没有编译在X-Code中,在Blue Color文件夹中添加的所有文件都说在编译代码后找不到文件.
有没有为什么默认,我添加的文件夹是与项目相关的链接?
这个问题对我来说非常奇怪,您的反馈非常有帮助.
我目前正在自动化我们对jenkins的iOS测试.到目前为止,我没有运行单元测试,将OCUnit转换为JUnit并以Cobertura格式生成代码覆盖(大量的谷歌搜索,但没有硬问题).
但是,在创建UIAutomation工作时,我被困住了.测试成功运行(instruments从命令行调用).生成junit报告很棘手,但可能.问题是在运行UIAutomation时,不会生成代码覆盖文件.
是否有可能产生它们?如果没有,你能解释一下原因吗?
到目前为止我尝试了什么:
UIAHost. performTaskWithPathArgumentsTimeout.
编辑
使用不同的框架进行一些测试后,我意识到退出模拟器是不够的,你必须明确地exit()从应用程序调用.使用UI自动化这有点棘手,但您可以声明一个应用程序,例如my-app://exit,通过MobileSafari使用它来调用它UIAHost.performTaskWithPathArgumentsTimeout.将检查这是否足以生成文件.