分类: IOS技术

IOS技术

求教: iOS14 支持读取机械硬盘吗?

我记得 iOS14 是可以读取识别固态硬盘的(比如三星 T5 ),求问同样可以支持机械硬盘吗
*近想买个硬盘,钱包不够无奈选择了 2T 的西数机械硬盘
求问现在 iOS14 可以识别读取机械硬盘了吗,有没有老哥懂得
PS:有 Lighting 转 USB 的 OTG 转接线
17 条回复    2021-03-30 00:19:28 +08:00
bootloaders
    1

bootloaders   12 天前

iPad Pro 可以完美读机械硬盘,没有在 iPhone 上试过。iPadOS 和 iOS 是一个东西,应该 iPhone 上也可以吧。
learningman
    2

learningman   12 天前 via Android

供电可能不够吧,需要买那种独立供电的。
maizero
    3

maizero   12 天前

供电不足,会提示用电太大,带不起来。
一定要用,单独用 usb 给它供电。
另外不建议这样用,太不稳定了,容易挂。
AndyZhuAZ
    4

AndyZhuAZ   12 天前

可以,需要用单独供电的硬盘盒
zhangkaix
    5

zhangkaix   12 天前

@bootloaders 老哥你的机械硬盘是哪个牌子的
zhangkaix
    6

zhangkaix   12 天前

@maizero 我准备拿我室友的同款硬盘测试一波先
heh524866
    7

heh524866   12 天前

*好别用 ios 没有弹出硬盘的选项,热插拔机械硬盘很容易坏,你可以买 M2 固态组个移动硬盘。
zhangkaix
    8

zhangkaix   12 天前

@heh524866 好的老哥,我懂了,我还是老老实实在电脑上用吧,iOS 就不折腾了
现在我手头的相机 SD 卡和 U 盘都可以正常在 iOS 上用,倒数据还是用这俩吧,就不折腾啦
感谢答疑
maizero
    9

maizero   12 天前   ❤️ 1

真的不建议这样用。
机械硬盘供电不足的情况下,表面上看起来没什么,实际上暗藏隐患。
很多人觉得奇怪,机械移动硬盘插电脑用得好端端的,怎么突然就挂了?
其实不是突然,是长期 USB 供电不足导致的隐患。
bootloaders
    10

bootloaders   12 天前

@zhangkaix 西数。iPad Pro 的 USBC 口供电可能和 iPhone 的 lightning 不一样吧。没有在 iPhone 上试过。

zhaidoudou123
    11

zhaidoudou123   12 天前

对 iPhone 来说供电不够,iPad Pro 应该没问题
但是 iOS 就没有推出硬盘的选项,我每次固态硬盘拔的都胆战心惊
MisakaTian
    12

MisakaTian   12 天前

我建议再掏 200,随便用啥组一个轻 Nas 外挂上去
Mysqto
    13

Mysqto   12 天前

要用带供电的线 官方就这个 https://www.apple.com.cn/shop/product/MK0W2FE/A
chitanda
    14

chitanda   11 天前

@zhaidoudou123 我好像看到一个说法,iOS 不需要推出硬盘是因为随时都是处于安全模式
zhaidoudou123
    15

zhaidoudou123   11 天前

@chitanda #14 我不太清楚,那是不是说后台复制文件是被严格禁止的?反正我是觉得没有推出不太合理
agagega
    16

agagega   11 天前

@chitanda 我有次把一个 u 盘复制粘贴到自身的时候拔掉了,然后数据全部没了
7gugu
    17

7gugu   11 天前

可以直接使用,没有问题的

2021 年了, macbook 的中英文输入切换仍然不够流畅

手上有一台 macbook air m1,中文键盘( caps 键的位置是中 /英),当我快速打字需要中英文频繁切换时就会出现中英文切换失败的情况。只有多次(一般是 2-4 次)按输入法切换键才能够切换成功。

为了这个问题,专门去到天才吧进行检查,*后结果是键盘没有问题,天才吧维修员也没有给出有用的建议。自己回来后还专门切换到了搜狗输入法,发现情况依旧.
自己之前也有个 16 款的 mbp,操作系统从 mojave 一直用到了 big sur,这个问题一直存在。
虽然只是一个小小的 bug (姑且称之为 bug ?),但是实在是太影响体验了。请问各位是否有遇到此问题,以及是如何解决的。

54 条回复    2021-04-09 10:13:31 +08:00
liprais
    1

liprais   3 天前 via iPhone

看一下键盘的响应呗
inhd
    2

inhd   3 天前

自带 caps 切换中文,从未出现过 LZ 说的情况

如果是第三方我会将 Shift 禁用,只保留中文输入

cnryan
    3

cnryan   3 天前

我也是,从 Catalina 到 Big Sur 自带的输入法切换中英文经常失败,换用搜狗输入法用 Shift 切换就正常了。
darkingtime
    4

darkingtime   3 天前

跟 win 比确实是这样,在 mac 上写论文切大小写中英文速度都不快
Bolvvv
    5

Bolvvv   3 天前

是指 mac 的键盘响应设置吗?官方看到了这个: https://support.apple.com/zh-cn/guide/mac-help/mchlp2264/mac 不知道能不能够对输入法切换灵敏度有所改善。
york2132
    6

york2132   3 天前 via iPhone

M1,*新系统,今天多次备忘录系统键盘中英文切换失效了,按多少次都没用,需要关掉软件才能回来,体验很差
ftu
    7

ftu   3 天前

在我的印象中 Mac 对文字输入工作者的负加分挺多的。

Office 慢、有时打字卡、甚至有时 Safari 输入文字还没按空格呢直接变英文上屏了……(*条是硬伤,倒不是觉得 Mac 性能差,类似简单的 launchpad 会卡,这种不可思议而已)

Awes0me
    8

Awes0me   3 天前

关闭 touch bar 选词
yivvv
    9

yivvv   3 天前

我想你可以试着关掉 Automatically switch to a document’s input source 看看
1002xin
    10

1002xin   3 天前

自带输入法,Command + Space 切换中英文,很流畅
Bolvvv
    11

Bolvvv   3 天前

@Awes0me 目前在用的是 m1 的 air,没有 touch bar 欸
Bolvvv
    12

Bolvvv   3 天前

@yivvv 已经关闭过了,而且我的场景是在同一个应用下切换会失败,比如 vscode 写代码添加注释时就需要中英文切换,经常会失效。
Bolvvv
    13

Bolvvv   3 天前

@1002xin 因为习惯问题,一直使用 caps 进行切换。另外一个原因是频繁切换输入法的话一个按键效率会高一些。
york2132
    14

york2132   3 天前 via iPhone

@york2132 对了,我是美式英文键盘,自带输入法切换在 fn,也是用着用着就切换不了甚至需要重启
forvtest
    15

forvtest   3 天前

其实 Windows 自带的输入法也有同样的问题,时间久了需要好久才能切换,我怀疑是不是中文的特殊性?
finnlewis
    16

finnlewis   3 天前 via iPhone

我是 win10 英切中有时候要切几次,catalina 切没问题
HankLu
    17

HankLu   3 天前

windows 不香吗
kwoktung
    18

kwoktung   3 天前 via Android

我也有这个问题
anyforever
    19

anyforever   3 天前

我想把自带的用 caps 进行切换,改成用 shift,没找到哪里可以设置。。。在 win 上习惯了用 shift 切换。。。
darkingtime
    20

darkingtime   3 天前

@anyforever 直接搜狗,caps 大小写 shift 中英文一切回到 win 的体验,在 win 上习惯改到 mac 上原生输入法切中英文对大量文字类不友好,不知道之前各位 Mac 用户都怎么习惯的。。
ericwoflskin
    21

ericwoflskin   3 天前

没遇到,反而是 windows 经常要按好几次 shift 才能切换
sidkang
    22

sidkang   3 天前

目前用的第三方软件来操作切换输入法,一样有问题,其实就是苹果一直以来切换 CJVK 输入法 API 的 bug,有概率发生图标显示成功,但实际上没有变动的情况。只能继续默默等修复了,目前在用 AppleScript 操作右上 menu bar icon 来切换,稍有 0.3s 左右的延迟(估计),但起码也算保证成功了。
HAYABUSA
    23

HAYABUSA   3 天前

@darkingtime 用着用着就习惯了,我 Mac 和 Windows 都习惯。脑内自动切换。

@HankLu Windows 并不香。其实得看个人需求吧。

ttgo
    24

ttgo   3 天前 via iPhone

原生快捷键从没出现过切换失败。
但第三方快捷键,有一定概率失败,这个问题从很多很多年前就有了,从未被解决…
ttgo
    25

ttgo   3 天前 via iPhone

@sidkang 这个问题至少存在小 10 年了
anyforever
    26

anyforever   3 天前

@darkingtime 搜狗还是算了。还不如用原来配好的鼠须管。只是发现原生自带的五笔用着也不错了,所以体验了一段时间了。就是这个切换不太习惯
nine
    27

nine   3 天前

没出现过你这个问题

我的问题是切换输入法很卡,*近找到了解决方法—重启。

wclebb
    28

wclebb   3 天前

caps lock 确实存在偶尔失效。
表现在于长时间用输入法时,会按一次没反应,要再按几次才能切换。

好像已经存在好几年的 Bug 了。

treblex
    29

treblex   3 天前

rime 的切换很流畅,之前因为这个问题用过一段时间,但是因为键位不一样…经常按错,需要适应一下
RyougiShiki
    30

RyougiShiki   3 天前

没有这个问题,跟按 ABC 一样灵敏,无法感同身受,19 款 15 寸。
Outshine
    31

Outshine   3 天前

用过 14 年款 MacBook 和 2018 款,自带的输入法中英切换都是长按 中英切换 键(中 -> 英需要 2s,英 -> 中按一下就行)
wishyy
    32

wishyy   3 天前

mac 下有一个类似 win+空格切换输入法的组合键。输入法只留两个,一个中文一个纯英文,用输入法切换代替中 /英切换,比按 shift 方便多了
d0ub1e
    33

d0ub1e   3 天前

港版 MacBook Pro 2018,美式键盘,切换流畅,莫得任何问题。
Harry1993
    34

Harry1993   3 天前   ❤️ 2

我只有兩個輸入法,所以把 System Preferences -> Keyboard -> Shortcuts -> Input Sources -> Select the previous input source 設置成了 Ctrl + Space,中英切換百分百成功
Korto
    35

Korto   3 天前

MacBook Pro 2020 intel 切换流畅无问题。
xieshaohu
    36

xieshaohu   3 天前

18 款的 MBP,中文键盘布局,用中 /英切换,很顺溜。
bao3
    37

bao3   3 天前

从未出现过楼主的情况。。。。。自带输入法,capslock 切换,顺滑。
espaul64
    38

espaul64   3 天前 via iPhone

这东西有时需要长按才行,Mac 自带输入法*恶心的是 Safari 地址框输入时会掉字,Catalina 和 Big Sur 都有?
hpeng
    39

hpeng   3 天前 via iPhone

确实很烦,所以,我现在注释也用英文了
cubecube
    40

cubecube   3 天前

切换慢,跟不上手速的现象是客观存在的。目前只保留搜狗,使用 shift 能缓解
楼上很多说无影响的 v 友应该是无体感而已。很多人对 macos 鼠标飘也无体感
johnzcp
    41

johnzcp   3 天前

同款 MacBook, 同款问题
hanksun
    42

hanksun   3 天前 via iPhone

M1 Air 左下角 Fn 地球图标那个键切换输入法频繁失灵…
DICK23
    43

DICK23   3 天前

CapsLock 切换中英文经常失败都需要多按几次
tsening
    44

tsening   2 天前

我的切换中英满流畅的,但我的问题是,有的时候,比如打开浏览器,然后输入,这个操作如果很快的话,输入的码顺序会乱掉,比如我输入 nihc,可能就会变成 inhc 这样
hush3
    45

hush3   2 天前

开始我也以为是失效了 后来发现应该出现这种情况一般都是在快速切换中英文时 刚敲完一个键迅速按下 caps 紧接着又按下一个键 就会导致没切换。 解决办法就是切换的时候 按下 caps 稍微停顿一下再输入 就可以了。
lizardll
    46

lizardll   2 天前

win10 也一样……要停一秒钟再输入
iSecret
    47

iSecret   2 天前

CapsLock 长按这个问题我去过天才吧问过,说是 feature 。
slimxfir2
    48

slimxfir2   2 天前 via iPhone

搜狗 禁掉默认的输入法
aotuman233
    49

aotuman233   2 天前   ❤️ 1

用 karabiner-elements ( https://karabiner-elements.pqrs.org ),在 complex modification 菜单内左下角 add rule –> import more rules from internet,搜索 caps_lock,会有一个“caps_lock 切换中英文,长按锁定大写,短按恢复小写”的规则。
导入之后就完事了,原理应该是把 capslock 绑定为 control+空格。
nomemo
    50

nomemo   2 天前

说得跟 win10 切换很流畅一样,3700x 的 cpu 够可以了吧,切起来也是顿
Jaosn
    51

Jaosn   2 天前

等等,这个问题在 Windows 10 上不也一样会出现吗?
elphet
    52

elphet   2 天前

我对这个问题深有感触,我猜测是由于在一个键位上绑了两个功能导致的。CAP 键 [短按] 切输入法, [长按] 切大小写,导致 [短按] 的时候会期待一次 [长按] ,造成一定的延迟。
但是在它 [期待] 的过程中按下其它键,这个 [短按] 事件会消失,这就很让人费解了!
faninx
    53

faninx   2 天前

我还是习惯 Control+Space 切换
nexo
    54

nexo   1 天前

流程的 yep 亲测

macOS App Store 的微信能打开小程序了,是我村网通?

之前是官网版本才能打开小程序,App Store 版本没有小程序。今天才发现商店版本也可以打开了。但是商店里更新说明一直都没有说明过。我记得很清楚,只有官网版的更新说明里明确说明过可以打开小程序。

14 条回复    2021-04-08 16:28:35 +08:00
wunonglin
    1

wunonglin   2 天前

是的。
xaoflysho
    2

xaoflysho   2 天前

@wunonglin 大概是 3.0 版本加上的?
wunonglin
    3

wunonglin   2 天前

@xaoflysho #2 是的
xaoflysho
    4

xaoflysho   2 天前

@wunonglin 更新描述里没写,我以为没有呢,之前不上还以为是被苹果卡了
Xusually
    5

Xusually   2 天前

%title插图%num
%title插图%num

“但是商店里更新说明一直都没有说明过。我记得很清楚,只有官网版的更新说明里明确说明过可以打开小程序。”
???

xaoflysho
    6

xaoflysho   2 天前

@Xusually 小程序呀,不是朋友圈
xaoflysho
    7

xaoflysho   2 天前

@Xusually 大部分人的关注点都在朋友圈上了,小程序悄咪咪的上了
oIMOo
    8

oIMOo   2 天前

@Xusually 更新内容确实没有小程序啊,没明白你这个问号是在问什么。
你圈起来的高亮是朋友圈,不是小程序。
Xusually
    9

Xusually   2 天前

@xaoflysho 抱歉看错。。小程序我印象中是 3.0 之前一个小版本就支持的
Xusually
    10

Xusually   2 天前

@oIMOo 我看错,以为说朋友圈。

xaoflysho
    11

xaoflysho   2 天前

@Xusually 我的印象里,当时 App Store 版本小程序被割了,官网版本很早就有了,但是还是习惯于用商店里的,一直没有小程序,直到刚才才发现
mcluyu
    12

mcluyu   2 天前

3.0.1 商店一直更新安装失败,有没有刚好知道怎么搞的
breaker911
    13

breaker911   2 天前   ❤️ 1

@mcluyu 删了本地的再安装就好了 BUG SIR 版本特色
zzw1998
    14

zzw1998   2 天前 via iPhone

@xaoflysho 很久以前的 2.x 版本就有小程序了

iOS 开发-有大佬了解 AI 姿态识别吗?

公司要做一个运动 app 比如跳绳计数

本人对 AI 方面毫无接触过,网上查了下资料,也是一脸懵。 目前了解到的框架有苹果自带的 Vision,但是只能在 ios14 的系统上支持体态识别。

还有 TensorFlow 和 OpenPose 两个开源框架 看了下 demo 还是无法入手( demo 都是 swift 写的,本人主 java 兼 ios,目前只会 objc?)

请问大佬要做这个功能是否需要算法基础,有没有合适的框架、教程或者可以马上上手的 demo ?

10 条回复    2021-04-09 06:16:22 +08:00
billjobs
    1

billjobs   2 天前

你们公司没有算法工程师的吗
yinyansheng1987
    2

yinyansheng1987   2 天前

@billjobs 没的,这个是否必须要会算法?
icedwatermelon
    3

icedwatermelon   2 天前

https://github.com/cmdbug/YOLOv5_NCNN
这个 demo 下的 Simple-pose 可能和你的需求有相关
billjobs
    4

billjobs   2 天前

@yinyansheng1987 又一个全干工程师
yinyansheng1987
    5

yinyansheng1987   1 天前

@icedwatermelon 看不到图片?,我还想知道的是体态识别 AI 的预训练模型,是否包含了上述的跳绳等各类动作的判断,是不是还要自己写算法来训练模型?如果有 10 种运动动作,每个动作都要通过定制化的算法来训练模型,我可真是无能为力了?
icedwatermelon
    6

icedwatermelon   1 天前

@yinyansheng1987 #5 动作判断的我不太了解。但我猜动作识别和静物识别还是有区别,可能标志特征点的模型训练一套就够了,但模型输出的特征值要用起来需要根据不同的动作分别进行处理了
Building
    7

Building   1 天前 via iPhone

姿态检测太难了,可以换一种思路,比如可以先检测人脸,然后计算上下摆动幅度。
louiswang002
    8

louiswang002   1 天前 via iPhone

@Building 感觉你这个方案可行,如果画面是固定的,可以检测人脸的上下位置差异,再结合手机传感器应该能实现
root99527
    9

root99527   1 天前 via iPhone

模型只是识别关节点的坐标位置,具体的动作判断需要后处理完成。另外,如果你不只要做跳绳,还有一些比如瑜伽之类的,预训练的模型(尤其是移动端的模型)一般搞不定。移动端加速也是需要考虑的,如果你适配多个机型,还要考虑处理速度是否能跟上。
domodomo
    10

domodomo   1 天前

Apple 提供了相关的工具,ios12 以上就行

1.用 ARKit 追踪捕捉人体,得到 3D 数据
2.根据骨骼各关节点在 3D 环境中不同的位移数据来综合判断可能是什么动作,具体判断姿态用什么方法看你自己,数据都给你了。

不过我只用到 ARKit 来捕捉人体做动画,没有做姿态判断这一步,但是我觉得应该是可行的。

Apple 关于邮件提醒问题

手里有 Mac 、ipad 、iphone 。

然后提示有新邮件,就需要每个设备都打开一下。提示才能消失。让它不提示又怕在外边的时候漏了邮件。

大家是如何设置一个设备看完邮件,其它设备不再提示的?

7 条回复    2021-04-09 10:03:01 +08:00
dingwen07
    1

dingwen07   1 天前 via iPhone

用 Gmail
iasuna
    2

iasuna   1 天前

用 imap
dzdh
    3

dzdh   1 天前

imap +1

另外你是怎么让 mail 自动同步所有账号的

february2
    4

february2   1 天前 via iPhone

imap 喽
qlqsh
    5

qlqsh   1 天前

@dzdh 没设置。自动的。icloud 邮箱。
dzdh
    6

dzdh   1 天前

@qlqsh 啊,手动添加的邮件账号是不同步吧。
qlqsh
    7

qlqsh   1 天前

@dzdh 这个我还真不太清楚了。以前的账号都被墙了。所以也没实验过。

*近发现 iOS 下来电归属地错误,大家有遇到过或者解决过?

大概一个多月前来电归属地不论是来电通知还是通话列表都是正确的;但是*近发现来电通知的归属地变成错误的了。观察了一段时间发现:错误的归属地不是随机显示一个归属地,而是固定的把某号段的归属错误显示到其他地方了,比如青海海北的号码会显示西藏淮安、福建福州的号码会显示江西赣江等等。

设备信息是国行 iPhone 11 Pro Max,iOS 14.4 。大家有遇到过类似的情况吗,如果没有解决办法的话只能考虑升级一下系统到 14.4.2 或者 DFU 刷一遍了……


图片

来电通知,错误的归属地: %title插图%num

通话列表,正确的归属地: %title插图%num

6 条回复    2021-04-10 13:04:08 +08:00
SilencerL
    1

SilencerL   20 小时 33 分钟前

终于在 Apple 支持社区找到了非官方的解决方案:
https://discussionschinese.apple.com/thread/252635254

描述中来看部分 14.4.2 也存在此问题看来是个尚未解决 Bug……

解决方案:在设置里 把地区先设置成台湾 再设置成中国大陆 我的就是这样弄好了的

binwen
    2

binwen   17 小时 53 分钟前 via iPhone

我的重启就好了,iphone 11
xumng123
    3

xumng123   8 小时 37 分钟前 via iPhone

遇到,陕西北京都有
mschultz
    4

mschultz   8 小时 12 分钟前 via iPhone

https://t.me/AppleCooked/9078
sobigfish
    5

sobigfish   6 小时 54 分钟前 via iPhone

不打码后面,这样完全看不到号段?
Vitta
    6

Vitta   3 小时 57 分钟前 via iPhone

北京郑州

感觉苹果要发 AR 眼镜了

根据 WWDC 那个海报 https://developer.apple.com/wwdc21/

还有昨天“苹果代言人”何同学发的 AR 眼镜视频 https://www.bilibili.com/video/BV1RA41157hM

可能都是苹果新品铺垫,大家觉得呢?虽然我觉得目前的 AR 真的挺鸡肋的,属于玩一玩挺有意思,但*不会高频次融入生活像手机那样使用

21 条回复    2021-04-10 14:42:48 +08:00
darksword21
    1

darksword21   4 小时 10 分钟前   ❤️ 2

我这就发微信问问库克
Kr98
    2

Kr98   4 小时 7 分钟前 via Android

你想太多了,人家只是想把 21 june 7 换种方式打出来罢了。
Building
    3

Building   4 小时 1 分钟前   ❤️ 5

有一个人在机场等六点的飞机,可是他忘记了带手表,于是他想找个人问问。
这时,他看见一个人提着两个巨大的手提箱吃力的走过来,手腕上戴着一块异常漂亮的一看就知道是高科技产品的手表。
“请问,几点了?”他问道。
“哪个国家的时间?”那人反问。
“哦?”他的好奇心来了,“你都知道哪些国家的时间呢?”
“所有的国家,”那人回答道。
“哇!那可真是一块好手表呀!”
“还不止这些呢,这块表还有 GPS 卫星系统,可以随时收发电子邮件、传真,这个彩色的屏幕可以收看NTSC制式的电视节目!”那人给他演示,果真如此!
“哦!太棒了,我真想拥有一块这样的手表,您……您可以把它卖给我吗?”
“说实话,我已经烦透了这块表了,这样吧,900 美元,如何?”
他马上掏出支票簿,写了900美元给那人,“成交!”
“好的,现在,它是你的了。”那人如释重负,把手表交给他,“这个是你的手表,”,然后指着地上的两个大箱子说,“这两个是电池!”
x86
    4

x86   3 小时 59 分钟前   ❤️ 1

你们小时候考试是不是阅读理解都是满分的?
santheniko
    5

santheniko   3 小时 53 分钟前

@Kr98 也许苹果也有这层含义,但也有楼主的那层含义
eden0412
    6

eden0412   3 小时 45 分钟前

根据 WWDC 海报猜新品猜错也不是一次两次了
wanguorui123
    7

wanguorui123   3 小时 42 分钟前

做好了是下一代人机交互设备,做差了连 Apple Watch 都不如
oszlso
    8

oszlso   3 小时 39 分钟前

苹果确实要做 AR 眼镜,严格来讲*代产品不叫眼镜,是一款头戴式设备,而且不是面向消费者,可以期待今年苹果会分享相关进展
oszlso
    9

oszlso   3 小时 36 分钟前

因为这款产品太贵,普通人不会买…
qsmd42
    10

qsmd42   3 小时 26 分钟前

你都知道目前 AR 鸡肋 苹果又不傻 肯定等一两年技术成熟了才发

murmur
    11

murmur   3 小时 10 分钟前

那么这个 AR 眼镜他送不送充电器呢
nguoidiqua
    12

nguoidiqua   3 小时 1 分钟前

微软的 AR 设备已经签下两百亿美元的大单了。

这类设备给一般消费者日常用,显然是鸡肋且代价不菲的,但在一些特殊工作领域作用非常大。

苹果也有很多面向企业和专业人士需求的业务,毕竟早期的苹果电脑都是这种定位,现在要做个 AR 设备也不奇怪。但根据我的估计,应该没那么快发布设备,可能只是类似去年先公布电脑要转向 ARM 那样。

netshell
    13

netshell   2 小时 57 分钟前

不看好消费端的 ar
可能在有限的领域和专业上有价值
可能给 b 端或开发者
Pandroid
    14

Pandroid   2 小时 53 分钟前

Apple 做 AR 眼镜,消息都已经传了三四年了。。。。
byicer
    15

byicer   2 小时 20 分钟前

一人发一个吗?
BingoXuan
    16

BingoXuan   2 小时 13 分钟前 via Android

lz 感觉而已。乐观估计 2023 。
otakustay
    17

otakustay   2 小时 5 分钟前

据说 iOS 15 的图标也改了,带深度了
ElliotQi
    18

ElliotQi   1 小时 46 分钟前

昨天晚上看了何同学视频同有这种想法,脐带一下
z761031
    19

z761031   1 小时 16 分钟前

不是出街带的眼镜,而是室内头戴式游戏沉浸设备,占领游戏市场用的。
jackwow
    20

jackwow   50 分钟前

@Kr98 换种方式有很多,那为什么是用这种方式呢?
想多了不是问题,想不出来才是问题。
Kr98
    21

Kr98   45 分钟前

@jackwow 苹果为什么不叫西瓜呢要叫苹果呢?

iOS开发-调试网络限速(真机和模拟器)

在iOS开发中,针对不同网络状况做一下测试处理是很有必要的。但是我发现还是有一些iOS开发者不太注意到不同网络环境下的调试问题,或者说不清楚如何调试这种情况。

下面我将针对真机和模拟器分别做简单的说明。告诉大家如何模拟不同的网络状况。

1.真机情况下

其实Apple在iOS系统中预置了网络调试工具,但是只有添加过测试设备,并使用XCode连接下设备才能激活.

%title插图%num

注意中间的那行NETWORK LINK CONDITIONER

%title插图%num

上图中的Status是表示网络限制是否开启,点击进去就可看到详细设置

%title插图%num

可以看到系统默认配置的网络条件还是很多的,其中:

100%Loss是全丢包,

3G这个就不用说了吧

DSL是电话线上网,

Edge是2G网络,

High Latency DNS是高延迟,

Very Bad Network是网络状况不稳定。

并且底部还有一个添加额外配置的选项可以自定义网络状况。

2.模拟器

由于模拟器是在电脑上的,mac上也有和iOS设备中一样的调试工具,并且在Apple官网工具中有哦。

该工具的Apple官方地址:https://developer.apple.com/downloads/index.action?q=Network%20Link%20Conditioner#
输入搜索:Hardware IO Tools for Xcode 下载自己需要的版本就好了

%title插图%num

打开DMG文件,里面包含了许多调试工具,其他的工具有兴趣的可以自己去看一下。这里我们只打开Network Link Conditioner.prefPane这个文件

%title插图%num

在系统偏好中出现了工具:

%title插图%num

打开工具,看一下。

%title插图%num

几乎和手机一样。可以看到系统默认配置的网络条件还是很多的,其中:

100%Loss是全丢包,

3G这个就不用说了吧

DSL是电话线上网,

Edge是2G网络,

High Latency DNS是高延迟,

Very Bad Network是网络状况不稳定。

Git 【Mac 系统下搭建本地 Git 服务器】

一、准备原料

① jdk

下载地址:jdk

② gitblit

下载地址:gitblit.com

二、配置

jdk 直接安装即可。

gitblit 需要进行一些小配置:

① 解压下载好的 gitblit 文件,我这里的版本为 1.8.0。

%title插图%num

② 配置本地 Git 服务器仓库存储数据的根目录。

打开文件 ~/gitblit-1.8.0/data/defaults.properties

修改本地 Git 服务器仓库根目录:

git.repositoriesFolder = GitRepository
我这里用的文件夹名称为 GitRepository。

修改 HTTP 协议端口号:

server.httpPort = 1234
这里可以随便自定义一个不重复的端口号。保存。

③ 启动 gitblit 服务。

./gitblit.sh

你会看到如下命令行输出:

1 wangzhongyao:gitblit-1.8.0 wangzhongyao$ ./gitblit.sh
2 2017-11-02 16:09:50 [INFO ]
3   _____  _  _    _      _  _  _
4  |  __ \(_)| |  | |    | |(_)| |
5  | |  \/ _ | |_ | |__  | | _ | |_
6  | | __ | || __|| ‘_ \ | || || __|  http://gitblit.com
7  | |_\ \| || |_ | |_) || || || |_   @gitblit
8   \____/|_| \__||_.__/ |_||_| \__|  1.8.0
9
10 2017-11-02 16:09:50 [INFO ] Running on Mac OS X (10.13)
11 2017-11-02 16:09:50 [INFO ] Logging initialized @389ms
12 2017-11-02 16:09:55 [INFO ] Using JCE Standard Encryption Policy files, encryption key lengths will be limited
13 2017-11-02 16:09:55 [INFO ] Setting up HTTPS transport on port 8443
14 2017-11-02 16:09:55 [INFO ]    certificate alias = localhost
15 2017-11-02 16:09:55 [INFO ]    keyStorePath   = /Users/wangzhongyao/Desktop/gitblit-1.8.0/data/serverKeyStore.jks
16 2017-11-02 16:09:55 [INFO ]    trustStorePath = /Users/wangzhongyao/Desktop/gitblit-1.8.0/data/serverTrustStore.jks
17 2017-11-02 16:09:55 [INFO ]    crlPath        = /Users/wangzhongyao/Desktop/gitblit-1.8.0/data/certs/caRevocationList.crl
18 2017-11-02 16:09:55 [INFO ] Setting up HTTP transport on port 20202
19 2017-11-02 16:09:55 [INFO ] Shutdown Monitor listening on port 8081
20 2017-11-02 16:09:55 [INFO ] jetty-9.2.13.v20150730
21 2017-11-02 16:09:56 [INFO ] NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
22 2017-11-02 16:09:57 [INFO ]
23 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.manager.IRuntimeManager]—-
24 2017-11-02 16:09:57 [INFO ] Basefolder  : /Users/wangzhongyao/Desktop/gitblit-1.8.0/data
25 2017-11-02 16:09:57 [INFO ] Settings    : /Users/wangzhongyao/Desktop/gitblit-1.8.0/data/gitblit.properties
26 2017-11-02 16:09:57 [INFO ] JVM timezone: Asia/Shanghai (CST +0800)
27 2017-11-02 16:09:57 [INFO ] App timezone: Asia/Shanghai (CST +0800)
28 2017-11-02 16:09:57 [INFO ] JVM locale  : zh_CN
29 2017-11-02 16:09:57 [INFO ] App locale  : <client>
30 2017-11-02 16:09:57 [INFO ]
31 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.manager.INotificationManager]—-
32 2017-11-02 16:09:57 [WARN ] Mail service disabled.
33 2017-11-02 16:09:57 [INFO ]
34 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.manager.IUserManager]—-
35 2017-11-02 16:09:57 [INFO ] ConfigUserService(/Users/wangzhongyao/Desktop/gitblit-1.8.0/data/users.conf)
36 2017-11-02 16:09:57 [INFO ]
37 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.manager.IAuthenticationManager]—-
38 2017-11-02 16:09:57 [INFO ] External authentication disabled.
39 2017-11-02 16:09:57 [INFO ]
40 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.transport.ssh.IPublicKeyManager]—-
41 2017-11-02 16:09:57 [INFO ] FileKeyManager (/Users/wangzhongyao/Desktop/gitblit-1.8.0/data/ssh)
42 2017-11-02 16:09:57 [INFO ]
43 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.manager.IRepositoryManager]—-
44 2017-11-02 16:09:57 [INFO ] Repositories folder : /Users/wangzhongyao/Desktop/gitblit-1.8.0/GitRepository
45 2017-11-02 16:09:57 [INFO ] Identifying repositories…
46 2017-11-02 16:09:57 [INFO ] 1 repositories identified with calculated folder sizes in 166 msecs
47 2017-11-02 16:09:57 [INFO ] Lucene will process indexed branches every 2 minutes.
48 2017-11-02 16:09:57 [INFO ] Garbage Collector (GC) is disabled.
49 2017-11-02 16:09:57 [INFO ] Mirror service is disabled.
50 2017-11-02 16:09:57 [INFO ] Alias ‘UTF8’, UTF-9 & UTF-18 encodings as UTF-8 in JGit
51 2017-11-02 16:09:57 [INFO ] Preparing 14 day commit cache. please wait…
52 2017-11-02 16:09:57 [INFO ]   cached 1 commits for Git/CoderZYWang.git:refs/heads/master
53 2017-11-02 16:09:57 [INFO ] built 14 day commit cache of 1 commits across 1 repositories in 16 msecs
54 2017-11-02 16:09:57 [INFO ]
55 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.manager.IProjectManager]—-
56 2017-11-02 16:09:57 [INFO ]
57 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.manager.IFederationManager]—-
58 2017-11-02 16:09:57 [INFO ]
59 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.tickets.ITicketService]—-
60 2017-11-02 16:09:57 [INFO ] NullTicketService started
61 2017-11-02 16:09:57 [INFO ]
62 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.manager.IGitblit]—-
63 2017-11-02 16:09:57 [INFO ]
64 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.manager.IServicesManager]—-
65 2017-11-02 16:09:57 [INFO ] Federation passphrase is blank! This server can not be PULLED from.
66 2017-11-02 16:09:57 [INFO ] Fanout PubSub service is disabled.
67 2017-11-02 16:09:57 [INFO ] Git Daemon is listening on 0.0.0.0:9418
68 2017-11-02 16:09:57 [INFO ] SSH Daemon (NIO2) is listening on 0.0.0.0:29418
69 2017-11-02 16:09:57 [INFO ]
70 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.manager.IFilestoreManager]—-
71 2017-11-02 16:09:57 [INFO ] No filestore metadata file found
72 2017-11-02 16:09:57 [INFO ]
73 2017-11-02 16:09:57 [INFO ] —-[com.gitblit.manager.IPluginManager]—-
74 2017-11-02 16:09:57 [INFO ] PF4J version 1.8.0 in ‘deployment’ mode
75 2017-11-02 16:09:57 [INFO ] Enabled plugins: []
76 2017-11-02 16:09:57 [INFO ] Disabled plugins: []
77 2017-11-02 16:09:57 [INFO ] No plugins
78 2017-11-02 16:09:57 [INFO ]
79 2017-11-02 16:09:57 [INFO ] All managers started.
80 2017-11-02 16:09:57 [INFO ]
81 2017-11-02 16:09:58 [INFO ] [GitBlitWebApp] init: Wicket core library initializer
82 2017-11-02 16:09:58 [INFO ] [GitBlitWebApp] init: Wicket extensions initializer
83 2017-11-02 16:09:58 [INFO ] [GitBlitWebApp] Started Wicket version 1.4.22 in deployment mode
84 2017-11-02 16:09:58 [INFO ] Started o.e.j.w.WebAppContext@4e3a6f94{/,file:/Users/wangzhongyao/Desktop/gitblit-1.8.0/data/temp/webapp/,AVAILABLE}{file:/Users/wangzhongyao/Desktop/gitblit-1.8.0/gitblit.jar}
85 2017-11-02 16:09:58 [INFO ] Started ServerConnector@725746c{SSL-HTTP/1.1}{0.0.0.0:8443}
86 2017-11-02 16:09:58 [INFO ] Started ServerConnector@67f7fd0{HTTP/1.1}{0.0.0.0:20202}
87 2017-11-02 16:09:58 [INFO ] Started @8927ms

此时表示 Git 本地服务器仓库建立连接,你可以用服务器 IP + 端口号来访问:

%title插图%num

要注意的是,启动 gitblit.sh 服务的终端不要关闭,保持长连接,这样才可以持续访问 gitblit 本地服务器。

三、测试

我们可以直接在自己电脑上去拉取我们自己电脑作为 Git 服务器的 Git 仓库,如下:

%title插图%num

如此, 基于 Gitblit 的本地 Git 服务器搭建完毕。

要注意的是,虽然我们向自建本地 Git 服务器仓库提交代码。但是在我们本地服务器也是进行了加密处理过的。所以是看不到详细内容的。

具体提交的加密内容在 objects 文件夹下可以看到。而分支可以在 refs/heads 文件夹下查看。如下图:

%title插图%num

%title插图%num

iOS 【OC 封装网络请求业务类(AFHTTPSessionManager)】

由于AFNetworking底层请求由NSURLConnection更新为NSURLSession,管理者对象也由AFHTTPRequestOperationManager更新为AFURLSessionManager。

本文重点讲述如何封装AFN业务类,将第三方为程序带来的污染减小到*低。

读者可以结合老版本AFHTTPRequestOperationManager的封装去理解,具体请参考:

iOS 【network-封装业务类AFNetworking(AFHTTPRequestOperationManager 废弃)】

代码描述:
① 封装业务类

1 //
2 //  WZYAFNTool.h
3 //  0716-02AFN上传下载GETPOST-01
4 //
5 //  Created by 王中尧 on 16/7/16.
6 //  Copyright © 2016年 wzy. All rights reserved.
7 //
8
9 #import <Foundation/Foundation.h>
10 @class AFNetWorking;
11
12 @interface WZYAFNTool : NSObject
13
14 + (void)get:(NSString *)url parameters:(id)params success:(void (^)(id object))success failure:(void (^)(NSError *error))failure;
15
16 + (void)post:(NSString *)url parameters:(id)params success:(void (^)(id object))success failure:(void (^)(NSError *error))failure;
17
18 + (void)unload:(NSString *)uploadUrl parameters:(id)params filePath:(NSString *)filePath name:(NSString *)name progress:(void (^)(NSProgress *))progress success:(void (^)(id object))success failure:(void (^)(NSError *))failure;
19
20 + (void)download:(NSString *)url progress:(void (^)(NSProgress *progress))progress destination:(NSURL *(^)(NSURL *targetPath, NSURLResponse *response))destination failure:(void (^)(NSURLResponse * response, NSURL * filePath, NSError * error))failure;
21
22 @end

 

 

1 //
2 //  WZYAFNTool.m
3 //  0716-02AFN上传下载GETPOST-01
4 //
5 //  Created by 王中尧 on 16/7/16.
6 //  Copyright © 2016年 wzy. All rights reserved.
7 //
8
9 #import “WZYAFNTool.h”
10 #import “AFNetworking.h”
11
12 @implementation WZYAFNTool
13
14 + (void)get:(NSString *)url parameters:(id)params success:(void (^)(id object))success failure:(void (^)(NSError *error))failure {
15
16     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
17
18     [manager GET:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
19
20         if (success) {
21             success(responseObject);
22         }
23
24     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
25
26         if (failure) {
27             failure(error);
28         }
29
30     }];
31 }
32
33 + (void)post:(NSString *)url parameters:(id)params success:(void (^)(id object))success failure:(void (^)(NSError *error))failure {
34
35     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
36
37     [manager GET:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
38
39         if (success) {
40             success(responseObject);
41         }
42
43     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
44
45         if (failure) {
46             failure(error);
47         }
48
49     }];
50 }
51
52 + (void)unload:(NSString *)uploadUrl parameters:(id)params filePath:(NSString *)filePath name:(NSString *)name progress:(void (^)(NSProgress *progress))progress success:(void (^)(id object))success failure:(void (^)(NSError *error))failure {
53
54     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
55
56     [manager POST:uploadUrl parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
57
58         /*
59          *个参数:要上传的文件的URL
60          第二个参数:后台接口规定
61          第三个参数:错误信息
62          */
63         [formData appendPartWithFileURL:[NSURL fileURLWithPath:filePath] name:name error:nil];
64     } progress:^(NSProgress * _Nonnull uploadProgress) {
65
66         if (progress) {
67             progress(uploadProgress);
68         }
69
70     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
71
72         if (success) {
73             success(responseObject);
74         }
75
76     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
77
78         if (failure) {
79             failure(error);
80         }
81
82     }];
83 }
84
85 + (void)download:(NSString *)url progress:(void (^)(NSProgress *progress))progress destination:(NSURL *(^)(NSURL *targetPath, NSURLResponse *response))destination failure:(void (^)(NSURLResponse * response, NSURL * filePath, NSError * error))failure {
86     // 1 创建会话管理者
87     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
88
89     // 2 创建请求路径 请求对象
90     NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
91
92     // 3 创建请求下载操作对象
93     NSURLSessionDownloadTask *downTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
94
95         if (progress) {
96             progress(downloadProgress);
97         }
98
99     } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
100
101         if (destination) {
102             return  destination(targetPath, response);
103         } else {
104             return nil;
105         }
106     } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
107         if (failure) {
108             failure(response, filePath, error);
109         }
110     }];
111
112     // 4 执行任务发送下载操作请求
113     [downTask resume];
114 }
115
116 @end

 

② 调用

1 //
2 //  ViewController.m
3 //  0716-02AFN上传下载GETPOST-01
4 //
5 //  Created by 王中尧 on 16/7/16.
6 //  Copyright © 2016年 wzy. All rights reserved.
7 //
8
9 #import “ViewController.h”
10 #import “AFNetworking.h”
11
12 #import “WZYAFNTool.h”
13
14 @interface ViewController ()
15
16 @end
17
18 @implementation ViewController
19
20 – (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
21     // 使用AFN原生方法
22 //    [self getAFN];
23 //    [self postAFN];
24 //    [self upload];
25 //    [self download];
26
27     // 使用WZYAFNTool业务类
28 //    [self wzyGET];
29 //    [self wzyPOST];
30 //    [self wzyUpload];
31 //    [self wzyDownload];
32 }
33
34 // AFN GET请求
35 – (void)getAFN {
36
37     // 1 封装会话管理者
38     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
39
40     // 2 拼接请求参数
41     NSDictionary *dict = @{
42                            @”username” : @”xxx”,
43                            @”pwd” : @”xxx”,
44                            @”type” : @”JSON”
45                            };
46     // 3 发送请求
47     /*
48      *个参数:请求路径(!不包含参数) 类型是NSString
49      以前:http://120.25.226.186:32812/login?username=xxx&pwd=xxx&type=JSON
50      现在:http://120.25.226.186:32812/login
51      第二个参数:参数(用字典来保存参数)
52      第三个参数:progress 进度回调
53      第四个参数:success成功之后的回调
54      responseObject:注意此参数是响应体(内部已经完成了反序列化处理:JSON—>OC,此处类型为id,也就是OC对象)
55      task.response:响应头
56      第五个参数:failure 失败之后的回调
57     */
58     [manager GET:@”http://120.25.226.186:32812/login” parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
59
60         NSLog(@”success—%@—%@”, responseObject, [responseObject class]);
61     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
62         NSLog(@”failure—%@”, error);
63     }];
64
65 }
66 // WZYAFNTool GET请求
67 – (void)wzyGET {
68     NSDictionary *dict = @{
69                            @”username” : @”xxx”,
70                            @”pwd” : @”xxx”,
71                            @”type” : @”JSON”
72                            };
73
74     [WZYAFNTool get:@”http://120.25.226.186:32812/login” parameters:dict success:^(id object) {
75         NSLog(@”success—%@”, object);
76     } failure:^(NSError *error) {
77         NSLog(@”error—%@”, error);
78     }];
79 }
80
81
82 // AFN POST请求
83 – (void)postAFN {
84     // 1 封装会话管理者
85     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
86
87     // 2 拼接请求参数
88     NSDictionary *dict = @{
89                            @”username” : @”xxx”,
90                            @”pwd” : @”xxx”,
91                            @”type” : @”JSON”
92                            };
93     // 3 发送请求
94     /*
95      *个参数:请求路径(!不包含参数) 类型是NSString
96      以前:http://120.25.226.186:32812/login?username=xxx&pwd=123&type=JSON
97      现在:http://120.25.226.186:32812/login
98      第二个参数:参数(用字典来保存参数)
99      第三个参数:progress 进度回调
100      第四个参数:success成功之后的回调
101      responseObject:注意此参数是响应体(内部已经完成了反序列化处理:JSON—>OC,此处类型为id,也就是OC对象)
102      task.response:响应头
103      第五个参数:failure 失败之后的回调
104      */
105     [manager POST:@”http://120.25.226.186:32812/login” parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
106
107         NSLog(@”success—%@—%@”, responseObject, [responseObject class]);
108     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
109         NSLog(@”failure—%@”, error);
110     }];
111 }
112 // WZYAFNTool POST请求
113 – (void)wzyPOST {
114     NSDictionary *dict = @{
115                            @”username” : @”xxx”,
116                            @”pwd” : @”xxx”,
117                            @”type” : @”JSON”
118                            };
119     [WZYAFNTool post:@”http://120.25.226.186:33122/login” parameters:dict success:^(id object) {
120         NSLog(@”success—%@”, object);
121     } failure:^(NSError *error) {
122         NSLog(@”error—%@”, error);
123     }];
124 }
125
126
127 // AFN 上传
128 – (void)upload {
129     // 1 创建请求者对象
130     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
131
132     // 2 发送POST请求上传数据文件
133     NSDictionary *dict = @{@”wzy” : @”wangzhongyao”};
134
135     /*
136      *个参数: 请求路径
137      第二个参数: 非文件参数 (字典)
138      第三个参数: constructingBodyWithBlock 处理上传的文件
139      第四个参数: progress 进度回调
140      第五个参数: success 成功之后的回调
141      responseObject 响应体
142      第六个参数: failure 失败之后的回调
143      */
144
145     [manager POST:@”http://120.25.226.186:31112/upload” parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
146
147         /*
148          *个参数:要上传的文件的URL
149          第二个参数:后台接口规定
150          第三个参数:错误信息
151          */
152         [formData appendPartWithFileURL:[NSURL fileURLWithPath:@”/Users/wangzhongyao/Desktop/Snip20160716_17.png”] name:@”file” error:nil];
153     } progress:^(NSProgress * _Nonnull uploadProgress) {
154
155         // 上传进度
156         NSLog(@”unload — %f”, 1.0 *uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
157
158     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
159
160         //JSON—>OC 反序列化
161         NSLog(@”响应体 — %@”,responseObject); // responseObject 响应体 在方法内部就反序列化成功
162     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
163
164         // 输出错误信息
165         NSLog(@”%@”, error);
166     }];
167 }
168 // WZYAFNTool 上传
169 – (void)wzyUpload {
170     NSDictionary *dict = @{@”wzy” : @”wangzhongyao”};
171
172     [WZYAFNTool unload:@”http://120.25.226.186:32812/upload” parameters:dict filePath:@”/Users/wangzhongyao/Desktop/Snip20160716_17.png” name:@”file” progress:^(NSProgress *progress) {
173
174         // 上传进度
175         NSLog(@”unload — %f”, 1.0 *progress.completedUnitCount / progress.totalUnitCount);
176     } success:^(id object) {
177
178         //JSON—>OC 反序列化
179         NSLog(@”响应体 — %@”,object); // responseObject 响应体 在方法内部就反序列化成功
180     } failure:^(NSError *error) {
181
182         // 输出错误信息
183         NSLog(@”%@”, error);
184     }];
185
186 }
187
188
189 // AFN 下载
190 – (void)download {
191
192     /*
193      *个参数: 请求对象
194      第二个参数: progress进度回调
195      第三个参数: destination URL处理的回调
196                targetPath:文件下载到沙盒中的临时路径
197                response:响应头信息
198      返回值: 告诉AFN文件应该剪切到什么地方
199      第四个参数: completionHandler完成之后的回调
200                filePath:就是文件的*终保存位置
201      */
202
203     // 1 创建会话管理者
204     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
205
206     // 2 创建请求路径 请求对象
207     NSURL *url = [NSURL URLWithString:@”http://www.bz55.com/uploads/allimg/150326/140-150326141213-50.jpg”];
208     NSURLRequest *request = [NSURLRequest requestWithURL:url];
209
210     // 3 创建请求下载操作对象
211     NSURLSessionDownloadTask *downTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
212
213         // 计算进度
214         NSLog(@”downloading — %f”, 1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);
215
216     } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
217
218         // 获得文件下载保存的全路径
219         NSString *fullPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:response.suggestedFilename];
220         NSLog(@”fullPath — %@, tmpPath — %@”, fullPath, targetPath); // 打印需要修改的全路径 & 临时路径
221
222         // 该方法会拼接上协议头 file:// 成为一个完整的URL,而URLWithString不会自动拼接协议头
223         return [NSURL fileURLWithPath:fullPath]; // 该block是有返回值的,返回文件剪切保存的路径
224
225     } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
226         NSLog(@”filePath — %@”, filePath);
227     }];
228
229     // 4 执行任务发送下载操作请求
230     [downTask resume];
231 }
232 // WZYAFNTool 下载
233 – (void)wzyDownload {
234     [WZYAFNTool download:@”http://www.bz55.com/uploads/allimg/150326/140-150326141213-50.jpg” progress:^(NSProgress *progress) {
235
236         // 计算进度
237         NSLog(@”downloading — %f”, 1.0 * progress.completedUnitCount / progress.totalUnitCount);
238
239     } destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
240
241         // 获得文件下载保存的全路径
242         NSString *fullPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:response.suggestedFilename];
243         NSLog(@”fullPath — %@, tmpPath — %@”, fullPath, targetPath); // 打印需要修改的全路径 & 临时路径
244
245         // 该方法会拼接上协议头 file:// 成为一个完整的URL,而URLWithString不会自动拼接协议头
246         return [NSURL fileURLWithPath:fullPath];
247
248     } failure:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
249
250         NSLog(@”filePath — %@”, filePath); // filePath — (null)
251
252     }];
253 }
254
255 @end

 

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速