Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iTeaTime(技术清谈【-006期】【代号:西部世界】 #15

Open
ChenYilong opened this issue Aug 7, 2019 · 1 comment
Open

Comments

@ChenYilong
Copy link
Member

ChenYilong commented Aug 7, 2019

iTeaTime(技术清谈)【-006期】【代号:西部世界】

主题:iOS13适配专辑
出品人:GitHub@ChenYilong





enter image description here


请对以下【iOS13】标签的问题均为 iOS13 新特性已经引入的新适配问题,发表你的看法,内容不限,必须包括需要适配的解读以及方案,引用的文章需要给出参考链接,必须给出自己的见解:

1 【问题】【iOS13】SwiftUI


2 【问题】【iOS13】iPadOS app for macOS


3 【问题】【iOS13】LBS:Location authority


4 【问题】【iOS13】faster app launch、smaller app updates


5 【问题】【iOS13】Sign in with Apple


6 【问题】【iOS13】iPadOS


7 【问题】【iOS13】Reactive Programming in iOS13


8 【问题】【iOS13】Independent apps on Apple Watch


9 【问题】【iOS13】Dark Mode


10【问题】【iOS13】AR


12【问题】【iOS13】新系统 KVC crash 风险


13【问题】【iOS13】模态界面默认交互改变


14【问题】【iOS13】App Delegate --> Scene Delegate


15【问题】【iOS】【hybrid】针对 RN 开发人员不熟悉native开发的情况下,会出现很多操作,比如绘制一个3000px的cell,cell重用符号滥用,在scrollView上强行拼view而不用tableView,等等,针对这些情况,你作为一个native的开发,怎么避免或者及时预警?

【难度】🌟🌟🌟🌟
【出题人】 大灰灰-平安-iOS-上海


16【问题】【iOS13】SF Symbols in iOS 13


17【问题】嵌套进native的 web 页面,如何展示用户相册图片?

【难度】🌟🌟🌟
【出题人】 颜-物灵-iOS

//one more thing


18【问题】【iOS13】remove 3D touch


19【问题】【iOS13】CryptoKit


20【问题】【iOS】【hybrid】WKWebView 加载本地文件如何做兼容?

【难度】🌟🌟
【出题人】PlutoY-广州YY


21【问题】【iOS】【hybrid】调用 js 绘图库的情况下,调用 js 绘图通过以下方式调用会出现什么情况, 该怎么解决

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    // 调用 js 绘图
}

// 或者

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
   // 调用 js 绘图
}

【难度】🌟🌟
【出题人】 PlutoY-广州YY


22【问题】【iOS】【Android】【hybrid】如何用 js 创建一个原生的 Label 居中显示到某个 ViewController/ activity 上,可以通过 JS 修改 Label 的 text 属性,iOS版本代码如下:

var label = new Label();
label.text("Lefe_x");

// view 为 App 当前显示的 ViewController 的 view,通过 js 获取。
label.addToSuperView(view);

【难度】🌟🌟🌟
【出题人】 百度阅读-Lefe_x


23【问题】【iOS13】NotificationCenter


24【问题】【iOS13】Network


25 【问题】【iOS】 setNeedsLayoutlayoutIfNeeded 调用后,系统布局执行刷新的时机是怎么样的? 如果两个方法同时调用会有什么效果与问题?

   [self setNeedsLayout];
   [self layoutIfNeeded];

【提示】请问各位大佬,团队里写代码随意,很多地方都调用了setNeedsLayout,触发了界面刷新,能不能像前端那样弄个虚拟dom减少频繁刷新对性能的影响?"
看到有些人代码每次setModel都要setneedslayout一下 不知道为啥

【答案】

iTeaTime(技术清谈)@SAGESSE-深圳-某不知名小作坊:

如果同时使用就是强制重新布局。

调用setNeedsLayout是为了减少layoutSubviews的执行次数,如果set一次就修改布局一次,很浪费性能, 所以系统提供了setNeedsLayout 来标记这个区域是否需要重新布局,在下一周期时会调用layoutIfNeeded方法,当检测到标记时调用layoutSubviews进行重新布局。

一般主动调用layoutIfNeeded提前布局是在需要获取位置或者生成动画才需要,所以建议延迟布局。

Q:还有没有像虚拟dom那样计算真正变化 的ui的?

A:系统的layoutSubviews本身就是在计算有没有真正变化

Q:但是里面全部UI都在里面计算了。相同的计算会导致UI刷新么。

A:系统的不会,随非你手动调用setframe/setcenter/setbounds。

Q:像在layoutsubviews里面很多这样写`self.contentView.frame = CGRectMake(25, (SCREENHEIGHT - 280) / 2, SCREENWIDTH - 50, 280); 即使每次相同都会导致刷新吧

A:的确会导致页面刷新, 所以建议检查一下值是否发生了变化再set 比如:

CGRect nframe = ...;
if (!CGRectIsEqual(self.contentView.frame, nframe)) {
  self.contentView.frame = nframe;
}

Q:强行这样判断导致开发效率降低了

A:是很麻烦,但系统己经提供了一套很好的解决方案,自动布局autoresizingMask和约束。它们只在需要的时候才会进行布局。


如果只是setneedlayouts self.view不影响subview的


26 【问题】【iOS】如何借助Xcode搜索所有在block内部的self 单词,借此来排查内存泄漏?

【提示】用instrument工具检测内存泄漏不是更方便吗?
检查不出,很难才出现一两次。但是确实存在,就是不知在哪个地方。几天测试才出现两次。所以才有这个挫招扫描。
【答案】

iTeaTime(技术清谈)@SAGESSE-深圳-某不知名小作坊:

\^(\s*\(.*\)\s*)?\{(.|\n)*?\bself\b[^}]*\}

可能会有误匹配,因为xcode居然不支持平衡组,不然,不可能有误匹配。

一般国际化需要这种方式搜字符串替换。


参考链接:

标题&链接 手机端阅读
标题:iOS13 Compositional Layout
链接:https://juejin.im/post/5d00c430f265da1b8466de01
标题&链接 手机端阅读
标题:iOS 13 升级体验
链接:https://juejin.im/post/5d2587da6fb9a07ed524c774

Posted by Posted by 微博@iOS程序犭袁 & 公众号@iTeaTime技术清谈
原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0


One more thing...

【非礼勿视】以下为彩蛋部分,建议28岁以上男性观看


//one more thing

@xiaoheiai4719
Copy link

【iOS】如何借助Xcode搜索所有在block内部的self 单词,借此来排查内存泄漏?
Masonry的也同时 校验出来的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants