真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ios開發(fā)復(fù)制,ios復(fù)制百度文庫(kù)

iOS開發(fā)怎樣實(shí)現(xiàn)全系統(tǒng)的文本復(fù)制粘貼

在開發(fā)的過程中,我們有時(shí)候想要在A應(yīng)用中復(fù)制一段文本,然后在B應(yīng)用中粘貼使用,這就需要使用到系統(tǒng)級(jí)的復(fù)制粘貼功能了。在iOS中,實(shí)現(xiàn)全系統(tǒng)復(fù)制功能的代碼其實(shí)很簡(jiǎn)單:

創(chuàng)新互聯(lián)公司是一家專業(yè)從事網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司。作為專業(yè)網(wǎng)站設(shè)計(jì)公司,創(chuàng)新互聯(lián)公司依托的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!

UIPasteboard *pb = [UIPasteboard generalPasteboard];

pb.string = @"hello,world!";

接下來我們看一下效果:

在這里我就先寫這么多,接下來我會(huì)把 UIPasteboard 類的詳細(xì)使用示例總結(jié)一下

iOS中關(guān)鍵字copy與mutableCopy的詳解

相信對(duì)于有一定iOS開發(fā)經(jīng)驗(yàn)的同學(xué)來說,對(duì)于copy關(guān)鍵字一定不陌生,從字義上來看,應(yīng)該就是復(fù)制一個(gè)對(duì)象,然后我們對(duì)于NSString類型的屬性,一般也用copy關(guān)鍵字。但是大家對(duì)于copy關(guān)鍵字真正有什么具體了解呢,什么時(shí)候用copy,什么時(shí)候用mutableCopy,區(qū)別又在哪里,對(duì)于內(nèi)存存儲(chǔ)上又有什么知識(shí)點(diǎn),我相信還有一部分同學(xué)一知半解。秉著鉆研探索的精神,我們來詳細(xì)的學(xué)習(xí)一下。

首先我們先說兩個(gè)兩個(gè)概念:

淺復(fù)制:不拷貝對(duì)象本身,僅僅是拷貝指向?qū)ο蟮闹羔?/p>

深復(fù)制:是直接拷貝整個(gè)對(duì)象內(nèi)存到另一塊內(nèi)存中

[圖片上傳失敗...(image-e2ec57-1528108363467)]

一般來說像這種使用‘=’號(hào)賦值的對(duì)象,基本上都是淺復(fù)制

[圖片上傳失敗...(image-a66b63-1528108363467)]

內(nèi)存地址一樣的,很簡(jiǎn)單,所以它也是我們說的淺復(fù)制之一。

然后我們來來看copy這關(guān)鍵字;

copy的字面意思就是“復(fù)制”,它是產(chǎn)生一個(gè)副本的過程,再來看在iOS里,copy與mutableCopy都是NSObject里的方法,一個(gè)NSObject的對(duì)象要想使用這兩個(gè)函數(shù),那么類必須實(shí)現(xiàn)NSCopying協(xié)議或NSMutableCopying協(xié)議,并且是實(shí)現(xiàn)了一般來說我們用的很多系統(tǒng)里的容器類已經(jīng)實(shí)現(xiàn)了這些方法。

[圖片上傳失敗...(image-76a9d8-1528108363467)]

如果不遵守協(xié)議,直接使用[xxx copy],那么會(huì)直接導(dǎo)致程序崩潰,比如UIView這個(gè)類就不允許使用copy

然后我們?cè)賮砜碿opy關(guān)鍵字的特點(diǎn):

修改源對(duì)象的屬性和行為,不會(huì)影響副本對(duì)象

修改副本對(duì)象的屬性和行為,不會(huì)影響源對(duì)象

一個(gè)對(duì)象可以通過copy和mutableCopy方法來創(chuàng)建一個(gè)副本對(duì)象

copy:創(chuàng)建的是不可變副本(NSString,NSArray,NSDictionary)

mutableCopy:創(chuàng)建的是可變副本(NSMutableString,NSMutableArray,NSMutableDictionary)

原則就是:修改新(舊)對(duì)象,不影響舊(新)對(duì)象!而且不一定產(chǎn)生新的對(duì)象?。▌澲攸c(diǎn))

看個(gè)例子:

打印

可以看到兩個(gè)對(duì)象的內(nèi)容完全一樣,但是地址空間變了,說明開辟了一塊新內(nèi)存供給副本,為什么這個(gè)會(huì)產(chǎn)生新的對(duì)象呢?

1.因?yàn)樵瓌t 修改新(舊)對(duì)象,不影響舊(新)對(duì)象,所以生成一個(gè)新的對(duì)象

2.因?yàn)橐郧暗膶?duì)象是個(gè)不可變對(duì)象,而通過mutableCopy拷貝出來的對(duì)象必須是一個(gè)可變的對(duì)象,所以必須生成一個(gè)新的對(duì)象

同理:

打印

文字內(nèi)容不同,對(duì)象地址不同,修改新(舊)對(duì)象,不影響舊(新)對(duì)象

相同的

打印

原理一樣,使用copy關(guān)鍵字,產(chǎn)生了一個(gè)新的不可變的對(duì)象

以上的例子我們可以發(fā)先,使用copy或者mutableCopy都有產(chǎn)生新對(duì)象,現(xiàn)在我們?cè)賮砜匆粋€(gè)例子

打印

這下我們發(fā)現(xiàn),兩個(gè)對(duì)象的內(nèi)存地址完全一樣,所以系統(tǒng)并沒有創(chuàng)建一個(gè)新對(duì)象,這是為什么呢?

當(dāng)我們對(duì)一個(gè)不可變對(duì)象(NSString類型)使用copy關(guān)鍵字的時(shí)候,系統(tǒng)是不會(huì)產(chǎn)生一個(gè)新對(duì)象,因?yàn)樵瓉淼膶?duì)象是不能修改的,拷貝出來的對(duì)象也是不能修改的,那么既然兩個(gè)都不可以修改,所以這兩個(gè)對(duì)象永遠(yuǎn)也不會(huì)影響到另一個(gè)對(duì)象(符合我們說的“修改新(舊)對(duì)象,不影響舊(新)對(duì)象”原則),系統(tǒng)為了節(jié)省內(nèi)存,所以就不會(huì)產(chǎn)生一個(gè)新的對(duì)象了。

那么問題來了, copy到底是深拷貝還是淺拷貝?

我相信有的同學(xué)認(rèn)為只要是使用copy關(guān)鍵字,那么肯定都是深拷貝,這樣是很不嚴(yán)謹(jǐn)?shù)?,就比如上個(gè)例子,雖然使用了copy,但是指針地址是一樣,那么它就應(yīng)該是淺拷貝。

所以是否是深淺拷貝,是否創(chuàng)建新的對(duì)象,是由程序運(yùn)行的環(huán)境所造成的,并不是一概而論。

對(duì)于NSArray,NSDictionary,道理也是相同的。

現(xiàn)在再讓我們看下copy的內(nèi)存管理:

淺拷貝不會(huì)生成新的對(duì)象,所以系統(tǒng)會(huì)對(duì)以前的對(duì)象進(jìn)行一次retain,深拷貝會(huì)產(chǎn)生新的對(duì)象,系統(tǒng)不會(huì)對(duì)以前的對(duì)象進(jìn)行retain。

接著我們來看下copy與Block的配合使用

首先我們還是回顧一個(gè)概念

block默認(rèn)存儲(chǔ)在棧中,棧中的Block訪問到的外界對(duì)象,不會(huì)對(duì)應(yīng)進(jìn)行retain

block如果在堆中,在block中訪問了外界的對(duì)象,會(huì)對(duì)外界的對(duì)象進(jìn)行一次retian

因?yàn)閎lock在什么時(shí)候執(zhí)行是不確定的,所以如果block里外部對(duì)象被提前釋放了,那么如果這時(shí)候block執(zhí)行了,造成野指針異常,程序crash。

所以對(duì)于Block來說,我們一般都用copy關(guān)鍵字修飾.

使用copy保存block,這樣可以保住block中,避免以后調(diào)用block的時(shí)候,外界的對(duì)象已經(jīng)釋放了

【iOS】iOS開發(fā)之使用Mac自動(dòng)操作制作@1x@2x@3x圖片(切圖)

iOS開發(fā)中,會(huì)要求導(dǎo)入@1x、@2x和@3x:

使用@1x格式: iPhone3GS

使用@2x格式: iPhone 4,4S,5,5S,5C,SE,6,6S,7,8,XR

使用@3x格式: iPhone 6Plus、6sPlus、7Plus、8Plus、X、XS、XS Max

這樣在開發(fā)過程中,將三種圖片(比如分別為1.png、1@2x.png和1@3x.png)導(dǎo)入到工程圖庫(kù)中的時(shí)候可以自動(dòng)被識(shí)別為1x、2x和3x大小的圖片

可以利用Mac系統(tǒng)中自帶的服務(wù)自己 制作一個(gè)快速生成@1x、@2x和@3x圖片的功能

首先spotlight搜索Automator,然后按Enter打開

**新建文稿 **

選取文稿類型為 快速操作

在工作流程收到當(dāng)前的后面選擇圖像文件

在左邊窗口的“操作”下,選擇“資源庫(kù)”中的“文件和文件夾”,將右側(cè)中的“給訪達(dá)項(xiàng)目重新命名”拖入最右側(cè)的大窗口中,(如果警告提示是否要增加一個(gè)“拷貝訪達(dá)項(xiàng)目”操作,選擇“不添加”),選擇“添加文本”,在輸入框中輸入【@3x】

拖入“復(fù)制訪達(dá)項(xiàng)目”

選擇左側(cè)“資源庫(kù)”中的照片,將“縮放圖像”拖入右側(cè)窗口(如果警告提示是否要增加一個(gè)“拷貝訪達(dá)項(xiàng)目”操作,選擇“不添加”),并選擇“按百分比”,輸入【66】

再拖入“文件和文件夾”下的“給訪達(dá)項(xiàng)目重新命名”,并選擇【替換文本】,查找【“】,以【僅基本名稱】;****再拖入“文件和文件夾”下的“給訪達(dá)項(xiàng)目重新命名”,并選擇【替換文本】,查找【@3x”的副本】,以【僅基本名稱】,替換成【@2x】

拖入“復(fù)制訪達(dá)項(xiàng)目”,選擇左側(cè)“資源庫(kù)”中的照片,將“縮放圖像”拖入右側(cè)窗口(如果警告提示是否要增加一個(gè)“拷貝訪達(dá)項(xiàng)目”操作,選擇“不添加”),并選擇“按百分比”,輸入【50】

再拖入“文件和文件夾”下的“給訪達(dá)項(xiàng)目重新命名”,并選擇【替換文本】,查找【“】,以【僅基本名稱】,再拖入“文件和文件夾”下的“給訪達(dá)項(xiàng)目重新命名”,并選擇【替換文本】,查找【@2x”的副本】,以【僅基本名稱】

然后保存,將“快速操作”存儲(chǔ)為“制作@2x@3x圖片”

每次使用的時(shí)候,只需選中圖片,選擇訪達(dá) - 服務(wù) - 制作@2x@3x圖片,****就會(huì)自動(dòng)生成三個(gè)圖片:1.png、1@2x.png和1@3x.png

最終效果~

iOS面試題:淺復(fù)制和深復(fù)制的區(qū)別?

淺層復(fù)制:只復(fù)制指向?qū)ο蟮闹羔槪粡?fù)制引用對(duì)象本身。

深層復(fù)制:復(fù)制引用對(duì)象本身。

意思就是說我有個(gè) A 對(duì)象,復(fù)制一份后得到 A_copy 對(duì)象后,對(duì)于淺

復(fù)制來說,A 和 A_copy 指向的是同一個(gè)內(nèi)存資源,復(fù)制的只不過是

是一個(gè)指針,對(duì)象本身資源

還是只有一份,那如果我們對(duì) A_copy 執(zhí)行了修改操作,那么發(fā)現(xiàn) A 引

用的對(duì)象同樣被修改,這其實(shí)違背了我們復(fù)制拷貝的一個(gè)思想。深復(fù)

制就好理解了,內(nèi)存中存在了

兩份獨(dú)立對(duì)象本身。

用網(wǎng)上一哥們通俗的話將就是:

淺復(fù)制好比你和你的影子,你完蛋,你的影子也完蛋

深復(fù)制好比你和你的克隆人,你完蛋,你的克隆人還活著。

更多: iOS面試題合集

iOS 15:如何從照片復(fù)制和粘貼文本

在 iOS 15 中,Apple 添加了一項(xiàng)名為 Live Text 的新功能,當(dāng)文本出現(xiàn)在相機(jī)的取景器或您拍攝的照片中時(shí),它可以識(shí)別文本,并讓您使用它執(zhí)行多項(xiàng)操作。

例如,如果您拍攝顯示電話號(hào)碼的店面照片,您可以捕捉該號(hào)碼以撥打電話或添加到您的聯(lián)系人中。您還可以從照片中復(fù)制實(shí)時(shí)文本,以便在其他地方使用。這是一個(gè)非常簡(jiǎn)單、有用的功能,下面是它以最簡(jiǎn)單的形式工作的方式。

1.在iPhone或iPad上啟動(dòng)照片應(yīng)用程序。

2.找一張有一些文字的照片,例如餐廳菜單或產(chǎn)品標(biāo)簽。

3.如果文本看起來很小,則捏合以縮放照片。

4.按住單詞,然后拖動(dòng)選擇工具的末端以突出顯示要復(fù)制的所有文本。

5.將手指離開屏幕,然后從上下文彈出菜單中選擇復(fù)制。

6.最后,切換到支持文本輸入的應(yīng)用程序,將手指按住光標(biāo)所在的位置,然后從彈出菜單中選擇粘貼。

您知道 Live Text 還具有光學(xué)字符識(shí)別功能嗎?這意味著如果您的照片中有手寫筆記的圖片,您仍然可以復(fù)制它,然后將其粘貼為數(shù)字文本。

Live Photos還可以與相機(jī)應(yīng)用程序和 iPhone 上的其他圖像配合使用,此外,除了復(fù)制/粘貼之外,還有其他功能,包括查找和翻譯,因此您可以翻譯照片中的外語(yǔ)文本。Live Text 也適用于 iPhone 上的 Spotlight 搜索,它可以通過標(biāo)準(zhǔn)的 iPhone 搜索來定位照片中的文本。

iOS開發(fā) 對(duì)象傳遞復(fù)制

開發(fā)中有這么一種情況,詳情頁(yè)面 detailsVc 持有 model, 需要將model傳給編輯頁(yè)面 editVc ,然后在編輯頁(yè)面修改

如果直接使用

會(huì)出現(xiàn)這么一種情況: 在 editVc 中修改,不管是否保存,返回?detailsVc 頁(yè)面,數(shù)據(jù)都會(huì)有變化,因?yàn)?model 在 editVc 中被修改了!

原因,看指針地址

因?yàn)槲?model 寫了懶加載,開始有個(gè)內(nèi)存地址,但是賦值之后,內(nèi)存地址變成了賦值model的內(nèi)存地址, 也就是傳遞的時(shí)候,只是 detailsVc 將持有的 model 的指針,傳給了?editVc 的model,并不是新建了一個(gè)值!?editVc 修改model 修改的是指針指向的區(qū)域的值,導(dǎo)致了detailsVc 的 model? 隨著變化,避免這種情況,就需要用到copy.

但是直接這樣寫,會(huì)崩潰! 因?yàn)檎{(diào)用 copy 方法時(shí),對(duì)象會(huì)調(diào)用?copyWithZone: 方法來實(shí)現(xiàn)賦值!

解決辦法: 讓對(duì)象實(shí)現(xiàn)?NSCopying 協(xié)議

當(dāng)然,屬性太多,這樣寫也夠累的,可以利用 runtime 完成

ps: ?這里 不能 return self ! copy 我們只是新建了一個(gè)來一個(gè)個(gè)賦值上去, return self 的話,就是把原本的返回,而不是 copy 出來的新對(duì)象!


當(dāng)前名稱:ios開發(fā)復(fù)制,ios復(fù)制百度文庫(kù)
路徑分享:http://weahome.cn/article/hojchh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部