小编Hon*_*ney的帖子

我应该选择哪种优化级别进行发布?

我从这里读到了关于快速断言并试图找到有关优化的更多信息.

for debug(默认):

编译器不执行任何优化,这反过来使调试代码并将其追溯到原始的源代码行变得更加容易.

用于-O:

编译器将从代码中删除符号(例如变量和函数名称),并对代码执行优化以提高其性能

用于-Ounchecked:

如果你想获得绝对最好的性能,那么这就是你想要的优化级别.尽管这种优化水平确实提高了性能,但它只能通过引入一定程度的风险来实现这一目标.在此优化级别,Swift编译器将跳过它在代码中通常执行的许多安全检查,以便挤出最后一盎司的性能

我的问题是:

  • 为了让用户更快...当我存档并发布我的应用程序时,我是否需要进行调整?或档案默认为-O

  • 我应该为用户提供哪个版本?-O还是-Ounchecked

debugging optimization xcode build swift

5
推荐指数
0
解决办法
1954
查看次数

我应该在收到有效负载后更新我的应用吗 或者我应该通过允许它自己下载来更新它?

当您的iPhone收到WhatsApp/Telegram推送通知时,例如

wife:
"buy pizza"
Run Code Online (Sandbox Code Playgroud)

问题1:应用程序是否必须自行下载/接收.这是手机上弹出的横幅必须为自己下载+我的Whatsapp/Telegram必须再次自行下载?

我的朋友回答说:

推送通知可以将消息作为有效负载.您的应用可以提取并动态插入到对话中而无需另外请求 - 我之前已经这样做了.让它感觉更加快捷.缺点是您不能保证推送将以正确的顺序(或根本没有)到达.

但我不相信,从语义的角度来看,推送通知不应该真正更新你的应用程序.如果他们这样做将是一种滥用......他们应该只通知您的应用程序更新,然后允许您通过下载任何已提供的新内容来自行更新.

因此,要查看顶级公司及其应用是否正在应用我的朋友建议我使用3个应用(Gmail,WhatsApp,Telegram)进行了一些实验:

我关闭了Wifi,但保留了蜂窝数据,然后我也禁用了应用程序使用Cellular数据的访问权限.

在此输入图像描述

然后我有人给我发了一条消息/电子邮件:这是我的结果:

电报::我收到警报(发件人+第一行).但是一旦我打开应用程序(或点击通知),它就没有我的新消息或任何东西.

但是,如果允许Telegram访问互联网...它会在后台下载消息...即如果我遵循以下顺序:我是wifi或没有互联网限制的蜂窝数据 - >收到通知 - >转互联网完全关闭,但然后转到应用程序:我会在那里看到完整的消息/正文.

Gmail:我收到提醒(有预览主题/发件人/正文)但是一旦我打开应用程序,它就没有我的新消息或任何东西.

如果Gmail应用程序被允许访问互联网......那么与Telegram相反:只有在打开应用程序本身之前,它才会下载/更新Gmail中的电子邮件.我猜Gmail没有content-available设置,1但Telegram设置为1

WhatsApp:我什么都没得到.

没有互动发生在接到通知......这只有当应用程序被下载情况本身.

我的结论是:

没有互动发生在接到通知......这只有当应用程序被下载情况本身独立于有效载荷的到来.

Gmail和Telegram正在进行冗余下载,基本上不够智能,我的朋友建议或者没有收到电子邮件/消息的风险太大,最好安全一点:thinking_face:

问题2:这个结论是否正确?

apple-push-notifications ios swift remote-notifications silent-notification

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

iOS 通知服务扩展会从设备中删除附加文件吗?

我遇到了一个奇怪的问题。iOS 通知服务扩展将从设备中删除附件。

我使用 SDWebImage 来显示和缓存图像,并实现了通知服务扩展以在通知警报视图中显示图像。

就我而言,图像已在本地缓存。然后,我单击主页按钮,我的应用程序在后台运行,应用程序安排了一个本地通知,并将缓存的图像附加到通知内容中。

请参阅下面的代码:

1.安排本地通知

+ (void)postLocalNotificationGreaterThanOrEqualToiOS10:(LNotification)module body:(NSDictionary *)body {
UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter];
UNMutableNotificationContent* content = [[UNMutableNotificationContent alloc] init];
content.sound = [UNNotificationSound defaultSound];
content.body = @"body";
content.userInfo = @{};

//get the image in device to attach into notification
NSError *error;
NSString* imgURL = [body valueForKey:kLocalNotification_Image];
NSString *filePath = [[SDImageCache sharedImageCache] defaultCachePathForKey:imgURL];
NSURL *url = [NSURL URLWithString:[@"file://" stringByAppendingString:filePath]];
UNNotificationAttachment *attachment = [UNNotificationAttachment attachmentWithIdentifier:@"Image" URL:url options:nil error:&error];
if (attachment) {
    content.attachments = @[attachment];
}

UNTimeIntervalNotificationTrigger* trigger = …
Run Code Online (Sandbox Code Playgroud)

apple-push-notifications ios unnotificationserviceextension

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

git reflog中的第二列是什么?

我做了一个简单的事git reflog,这是我得到的前几行:

column1                 Column2                                Column3
2797a1d4 (HEAD -> master, upstream/master) HEAD@{0}: checkout: moving from master to master
2797a1d4 (HEAD -> master, upstream/master) HEAD@{1}: pull upstream master: Fast-forward
a461a29f HEAD@{2}: checkout: moving from master to master
a461a29f HEAD@{3}: reset: moving to HEAD
a461a29f HEAD@{4}: pull upstream master: Fast-forward
784f2cp3 (yy, alphabets, hotFix) HEAD@{5}: checkout: moving from yy to master
784f2cp3 (yy, alphabets, hotFix) HEAD@{6}: checkout: moving from master to yy
784f2cp3 (yy, alphabets, hotFix) HEAD@{7}: checkout: moving from alphabets …
Run Code Online (Sandbox Code Playgroud)

git git-reflog

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

在iOS上运行Tensorflow时出错

我正在尝试构建一个新的Tensorflow Inception v3网络,以便在iOS应用程序上运行.

这是通过使用Tensorflow iOS演示中的步骤在iPhone上的iOS应用程序中工作.

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/ios

它正在使用旧的Inception图像分类器(optimizedgraph.pb和labels.txt文件)

我正在尝试用新图像重新生成网络.新网络在python,Android上运行良好,但在iOS上不起作用.

错误是:

2018-05-10 14:49:42.485845:E tensorflow/core/common_runtime/executor.cc:644] Executor无法创建内核.参数无效:NodeDef提到attr'dilations'不在Op输出中:T; attr = T:type,allowed = [DT_HALF,DT_FLOAT,DT_DOUBLE]; ATTR =步幅:列表(INT); ATTR = use_cudnn_on_gpu:布尔,默认= TRUE; attr = padding:string,allowed = ["SAME","VALID"]; attr = data_format:string,default ="NHWC",allowed = ["NHWC","NCHW"]>; NodeDef:conv/Conv2D = Conv2D [T = DT_FLOAT,data_format ="NHWC",dilations = [1,1,1,1],padding ="VALID",strides = [1,2,2,1],use_cudnn_on_gpu = true,_device ="/ job:localhost/replica:0/task:0/cpu:0"](_ recv_Mul_0,conv/conv2d_params).(检查GraphDef解释二进制文件是否与生成GraphDef的二进制文件保持同步.).[[节点:conv/Conv2D = Conv2D [T = DT_FLOAT,data_format ="NHWC",dilations = [1,1,1,1],padding ="VALID",strides = [1,2,2,1], use_cudnn_on_gpu = true,_device ="/ job:localhost/replica:0/task:0/cpu:0"](_ recv_Mul_0,conv/conv2d_params)]]

搜索我的唯一猜测是因为iOS Tensorflow支持基于旧版本的Tensorflow,使用Tensorflow 1.8构建的图形文件将无法正常工作.

我尝试在我的构建机器上降级到Tensorflow 1.7并重新生成图形文件,但1.7图形文件在iOS上给出了相同的错误.

有什么想法Tensorflow iOS需要什么版本?或者如果iOS可以升级,或者这个错误是由什么引起的?

iphone ios tensorflow

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

Swift中服务器的日期

我在Date中转换来自服务器的日期字符串时遇到问题.以下是我的代码

let dateString = "2017–04–02T13:10:00.000"  //Date coming from server
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'hh:mm:ss.SSS"
let date =  dateFormatter.date(from: dateString)
print("date is :\(String(describing: date))")
Run Code Online (Sandbox Code Playgroud)

但是日志是

date is :nil
Run Code Online (Sandbox Code Playgroud)

*更新为24小时格式

以下是24小时格式(HH)的更新

let dateString = "2017–04–02T13:10:00.000"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
let date =  dateFormatter.date(from: dateString)
Run Code Online (Sandbox Code Playgroud)

但结果相同

我试过这些链接

Link1 Link2 Link3

但没有成功.

请告诉我上面的代码我做错了什么.

timezone date nsdate nsdateformatter swift

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

如何在 WKWebView 中使用自动填充和钥匙串访问

在 i0S 11.0 中,在应用程序中引入了用户名和密码自动填充功能,但我在reddit上发现了一个帖子,说也可以在 WKWebView 中使用它,但找不到任何描述如何使用它,如何让 WKWebView 该特定的 inputView 是密码和用户名并在键盘上方显示自动填充

autofill keychain swift wkwebview

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

使用storeCachedResponse存储在缓存中后,不会检索URLresponse

目标

我正在尝试将URLRequest中的数据/响应注入我的缓存中的另一个 URLRequest.

建立

这只是一个示例代码.它已准备好被转储到一个项目中.

我正在尝试做的是使用从我的landscapeURLString网络请求中检索到的响应+数据...存储到我的会话缓存中以获取我的lizardURLString请求.

import UIKit

class ViewController: UIViewController {

    lazy var defaultSession : URLSession = {
        let urlCache = URLCache(memoryCapacity: 500 * 1024 * 1024, diskCapacity: 500 * 1024 * 1024, diskPath: "something")
        let configuration = URLSessionConfiguration.default
        configuration.urlCache = urlCache
        let session = URLSession(configuration: configuration)

        return session
    }()
    lazy var downloadLizzardbutton : UIButton = {
        let btn = UIButton()
        btn.translatesAutoresizingMaskIntoConstraints = false
        btn.setTitle("download lizard image OFFLINE", for: .normal)
        btn.backgroundColor = .blue
        btn.addTarget(self, …
Run Code Online (Sandbox Code Playgroud)

caching http nsurlcache ios nsurlsession

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

嵌套的UIScrollviews表现得很奇怪

我有以下自动布局驱动设置:

  • 主viewController,里面有一个scrollview.Scrollview固定到superview边缘.这个向上和向下滚动.在scrollview顶部有一些正常的固定大小的视图

  • 另一个scrollview.这个向左和向右滚动.第二个scrollview包含几个tableviews,并排.这个想法是用户可以在它们之间切换.它们都包含一些细胞,宽度与屏幕相同,高72pts.

我试图解决的问题是tableview内容的大小不同.左边有6个单元格,右边有3个单元格.

我的第一种方法是动态更改第二个scrollview高度,以匹配当前可见的tableview.最终发生的事情是,如果动画设置为true,那么在两个tableviews之间切换(通过执行setContentOffset:animated :)会出现极大错误 - 它会调整内容偏移,因此一切都在屏幕外.实际上它会将内容偏移设置为,然后当我切换时,大约十几次,然后重置.这很奇怪,我放弃了.

现在我试图调整主滚动视图的内容插入以抵消当前tableview内容的差距,这也很奇怪.当我在viewDidLoad中设置底部内容插入时,它工作正常.当我在tableview变为当前时设置它时,它什么都不做.

是什么赋予了?哪些情况会导致这些视图交互不正常?

uitableview uiscrollview ios autolayout swift

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

如何禁用某个 oslog 日志级别?

对于以下函数:

let authenticationLogger = OSLog(subsystem: "com.Company.AppNameQA" ?? "Empty bundleIdentifier", category: "Authenticaiton)
Run Code Online (Sandbox Code Playgroud)

如果我想禁用/启用某个日志级别该怎么办?

目前,使用 API,我唯一能够访问的是isEnabled以下功能:

authenticationLogger.isEnabled(.error) 
Run Code Online (Sandbox Code Playgroud)

它只返回它是否启用。

xcode logging ios swift oslog

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