您的位置:首頁 >聚焦 >

iOS 摸魚周報 #73 | macOS Ventura 初體驗

2022-11-04 16:05:43    來源:程序員客棧

本期概要

本期話題:Apple Search Ads 新增廣告位;macOS Ventura 體驗本周學(xué)習(xí):Swift 函數(shù)派發(fā)方式總結(jié)內(nèi)容推薦:網(wǎng)絡(luò)監(jiān)控內(nèi)容推薦,iOS 博主在新西蘭找工作的心路歷程摸一下魚:多種腳本語言中優(yōu)雅處理參數(shù)的三方庫

本期話題Apple Search Ads 新增廣告位[1]

zhangferry:Apple Search Ads 是 Apple 自己的廣告投放產(chǎn)品,它主要用于 App Store 內(nèi)的廣告投放。原來廣告位是在搜索結(jié)果頁(不搜索時也會展示廣告),最近又新增了兩個廣告入口(國區(qū)沒有),一個是 Today 產(chǎn)品卡片的底部,一個是在產(chǎn)品詳情頁的底部。

關(guān)于 Apple 對廣告位的擴展,遭到不少人的反對,主要集中在這幾點:

Apple 在注重隱私的背景下逐步限制 Facebook 和 Google 等的廣告追蹤能力,而自己卻在一步步擴大廣告的范圍。限制廣告追蹤難道不是在為自己的廣告業(yè)務(wù)鋪路?廣告最重要的是精準推薦,Apple Search Ads 如果說推薦精準那是不是就意味著它在分析用戶行為。按照這個趨勢,Apple 很有可能還會在 App Store 或者其他系統(tǒng)級應(yīng)用層面添加廣告位。macOS Ventura 體驗

@zhangferry:macOS Ventrua 已經(jīng)發(fā)布了正式版,安全起見只對家里電腦進行了升級。聽說有些人升級之后不少軟件沒有適配,直接用不了了,所以升級之前對于強依賴的軟件可以上網(wǎng)查一下是否能夠正常運行再決定是否升級。新系統(tǒng)體驗一段時間之后,有這些功能值得說一下:

設(shè)置界面大改,跟 iPhone 風格保持一致:用意應(yīng)該是想統(tǒng)一 macOS 與 iOS 的交互,對于初次從 iPhone 切換到 macOS 的用戶比較友好。但對于習(xí)慣了老版 macOS 設(shè)置界面的人來說,有點難受,很多內(nèi)容都需要重新適應(yīng)。Stage Manager(臺前調(diào)度):它是一個獨立功能,如果打開,當桌面出現(xiàn)超過 1 個窗口時就會自動觸發(fā),將多余窗口折疊到屏幕一側(cè)變成縮略窗口,一塊顯示器中縮略窗口最多有 5 組,雙顯示器就是 10 組,基本滿足大多數(shù)情況了。一屏如果超過 5 組,較早折疊的會被覆蓋,手動將縮略窗口拖出,還可以讓一屏同時展示多個窗口。如果想查看桌面的文件,可以點擊屏幕空白切換,再次點擊切換為窗口模式。習(xí)慣了之后感覺還是挺實用的一項功能。Spotlight 加強:可以搜索更詳細的內(nèi)容,這項提升是跟 iOS 一起的,結(jié)合圖片中的文字識別,搜索結(jié)果會更加豐富。我測試發(fā)現(xiàn)還能搜索 iCloud 里的內(nèi)容Metal 3:Metal 3 的意義不僅是在 Mac 端能夠直接開發(fā)出特效更加復(fù)雜的游戲,它憑借很多渲染層面的補足及加強,能夠讓很多 DirectX 的游戲可以相對完整的轉(zhuǎn)換到 Metal 3 上,但就這個層面來說,Mac 端可玩的游戲就會有很大補充。《生化危機 村莊》[2]也已經(jīng)登錄 Mac App Store,售價 39.99 美元,國區(qū)沒有上線。根據(jù)網(wǎng)上的測評這款游戲在 Mac 上的表現(xiàn)還不錯,期待未來有更多游戲大作登錄 Mac。本周學(xué)習(xí)

整理編輯:JY

Swift 函數(shù)派發(fā)方式總結(jié)

Swift當中主要有三種派發(fā)方式

sil_witness_table/sil_vtable:函數(shù)表派發(fā)objc_method:消息機制派發(fā)不在上述范圍內(nèi)的屬于直接派發(fā)

這里總結(jié)了一份 Swift派發(fā)方式的表格

直接派發(fā) 函數(shù)表派發(fā) 消息派發(fā)
NSObject @nonobjc 或者 final 修飾的方法 聲明作用域中方法 擴展方法及被 dynamic 修飾的方法
Class 不被 @objc 修飾的擴展方法及被 final 修飾的方法 聲明作用域中方法 dynamic 修飾的方法或者被 @objc 修飾的擴展方法
Protocol 擴展方法 聲明作用域中方法 @objc 修飾的方法或者被 objc 修飾的協(xié)議中所有方法
Value Type 所有方法
其他 全局方法,staic 修飾的方法;使用 final 聲明的類里面的所有方法;使用 private 聲明的方法和屬性會隱式 final 聲明;

協(xié)議 + 拓展

由上表我們可以得知,在 Swift中,協(xié)議聲明作用域中的方法是函數(shù)表派發(fā),而拓展則是直接派發(fā),當協(xié)議當中實現(xiàn)了 print函數(shù),那么最后調(diào)用會根據(jù)當前對象的實際類型進行調(diào)用

protocoltestA{funcprint()}extensiontestA{funcprint(){print("printA")}}structtestStruct:testA{funcprint(){print("printB")}}letone:testA=testStruct()lettwo:testStruct=testStruct()one.print()//printBtwo.print()//printB

追問:如果 protocol沒有實現(xiàn) print()方法,又出輸出什么?

protocoltestA{}extensiontestA{funcprint(){print("printA")}}structtestStruct:testA{funcprint(){print("printB")}}letone:testA=testStruct()lettwo:testStruct=testStruct()one.print()//printAtwo.print()//printB

因為協(xié)議中沒有聲明 print函數(shù),所以這時,one被聲明成testA, 只會按照拓展中的聲明類型去進行直接派發(fā)

而 two被聲明成為 testStruct,所用調(diào)用的是 testStruct當中的 print函數(shù)

內(nèi)容推薦

整理編輯:夏天

1、Check for internet connection with Swift[3]-- Stack Overflow

@夏天: 當存在在 iOS App 上監(jiān)測網(wǎng)絡(luò)狀態(tài)的需求時,不妨看一看這個提問,在回答中介紹了通過 SCNetworkReachability來實現(xiàn)網(wǎng)絡(luò)狀態(tài)監(jiān)聽及 NWPathMonitor。如果你的系統(tǒng)支持的版本在 iOS 12以上并且你有需要實現(xiàn)一個網(wǎng)絡(luò)狀態(tài)監(jiān)聽的程序,可以試一試NWPathMonitor。

2、Detecting Internet Access on iOS 12+ | by Ross Butler | Medium[4]-- Medium

@夏天: 這是一篇關(guān)于如果通過 NWPathMonitor來實現(xiàn) iOS 12以上實現(xiàn)網(wǎng)絡(luò)可達性判斷的文章,文章介紹了 NWPathMonitor的優(yōu)點以及在后面斷網(wǎng)時的不足,并且介紹了一個兼容的庫 Connectivity,但是該庫由于使用了 Combine并不兼容 iOS 13 以下了。

3、我是如何在新西蘭找到iOS開發(fā)工作的?[5]-- 陳宜龍(@iOS程序犭袁)

@夏天: 陳宜龍大佬是我學(xué)習(xí) iOS 比較追尋的一個博主了,最近他潤去了新西蘭,可以查看他的其他的 YouTube視頻。

摸一下魚

整理編輯:CoderStar

1、最近在寫腳本,這期介紹幾個幫助腳本語言接收參數(shù)更優(yōu)雅的三方庫;

shell: getoptions[6]python: python-fire[7]js:commander.js[8]ruby:commander[9]

2、原神助手 - mac端[10]:最近在玩原神,偶然間看到一個原神助手的工具:vikiboss/genshin-helper[11],支持原神簽到、祈愿分析、游戲詳細數(shù)據(jù)等功能。項目是基于 Electron 和 React 開發(fā)的,作者因為沒有 mac 電腦,僅提供了windows的包。于是我 fork 了該項目,添加了 mac 版本的包,大家如果有需要可以自行下載。

祈愿分析抓取祈愿詳情分析頁面的鏈接填入即可:

3、網(wǎng)頁飆車[12]:該游戲可以通過程序自動生成景觀和道路,用戶可以在這條路上駕駛,無需登錄,無需安裝,只有無盡的道路。

如果不想親自開車的話,按 F 鍵可以打開自動駕駛,用 E 鍵切換自己喜歡的場景,用 C 鍵切換攝像頭,只是看看風景,享受坐車的樂趣。

崗位內(nèi)推

[上海/北京] 小紅書 - 客戶基礎(chǔ)架構(gòu)技術(shù)團隊 - iOS - P6/P7/P8

團隊介紹

小紅書是中文互聯(lián)網(wǎng)最后的獨角獸,字節(jié)一直在模仿從來沒超越的對手,月活超過 2 億,大廠中唯一一家 iOS 用戶量占比能夠達到 50% 的公司。

客戶端基礎(chǔ)架構(gòu)團隊致力于打造最佳的移動端體驗,核心業(yè)務(wù)包括穩(wěn)定性、性能、埋點與數(shù)據(jù)監(jiān)控、日志/網(wǎng)絡(luò)/路由等基礎(chǔ)組件、工程效率和代碼質(zhì)量、RN 引擎容器等方面。技術(shù)棧采用 Swift 為主,提供了完整的基于語言特性的基礎(chǔ)能力,可以大幅提升客戶端開發(fā)的研發(fā)效率。

崗位描述熟悉社區(qū)/社交/內(nèi)容形態(tài)的產(chǎn)品,對用戶體驗負責打造極致的 App 性能和穩(wěn)定性提升客戶端研發(fā)幸福感,提高團隊研發(fā)效率參與關(guān)鍵方案設(shè)計,用技術(shù)和數(shù)據(jù)解決問題崗位要求

有過千萬級 DAU App 的基礎(chǔ)架構(gòu)方面開發(fā)經(jīng)驗,具有鉆研 iOS 系統(tǒng)底層實現(xiàn)與優(yōu)化的能力,能夠?qū)π袠I(yè)最前沿技術(shù)保持好奇心,對技術(shù)推動業(yè)務(wù)有深刻理解。

內(nèi)推聯(lián)系方式

JY微信:q491964334、安滋:18616378992,anzi@xiaohongshu.com

關(guān)于我們

iOS 摸魚周報,主要分享開發(fā)過程中遇到的經(jīng)驗教訓(xùn)、優(yōu)質(zhì)的博客、高質(zhì)量的學(xué)習(xí)資料、實用的開發(fā)工具等。周報倉庫在這里:https://github.com/zhangferry/iOSWeeklyLearning ,如果你有好的的內(nèi)容推薦可以通過 issue 的方式進行提交。另外也可以申請成為我們的常駐編輯,一起維護這份周報。另可關(guān)注公眾號:iOS成長之路,后臺點擊進群交流,聯(lián)系我們,獲取更多內(nèi)容。

往期推薦

iOS 摸魚周報 #72 | 1024 開始預(yù)熱

iOS 摸魚周報 #71 | iOS / One More Thing?

iOS 摸魚周報 #70 | iOS / iPadOS 16.1 公測版 Beta 3 發(fā)布,支持老款 iPad 臺前調(diào)度

iOS 摸魚周報 #69| 準備登陸靈動島

引用資料[1]

Apple Search Ads 新增廣告位: https://searchads.apple.com/advanced

[2]

《生化危機 村莊》: https://www.residentevil.com/village/en-asia/mac/

[3]

Check for internet connection with Swift: https://stackoverflow.com/questions/30743408/check-for-internet-connection-with-swift

[4]

Detecting Internet Access on iOS 12+ | by Ross Butler | Medium: https://medium.com/@rwbutler/nwpathmonitor-the-new-reachability-de101a5a8835

[5]

我是如何在新西蘭找到iOS開發(fā)工作的?: https://www.youtube.com/channel/UCiEbxa6e5o3mtBJIwhRxbHA?sub_confirmation=1

[6]

getoptions: https://github.com/ko1nksm/getoptions

[7]

python-fire: https://github.com/google/python-fire

[8]

commander.js: https://github.com/tj/commander.js

[9]

commander: https://github.com/commander-rb/commander

[10]

原神助手-mac端: https://github.com/zhangferry/genshin-helper

[11]

vikiboss/genshin-helper: https://github.com/vikiboss/genshin-helper

[12]

網(wǎng)頁飆車: https://slowroads.io/

關(guān)鍵詞: 基礎(chǔ)架構(gòu) 廣告投放 生化危機

相關(guān)閱讀