日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Objective-C:三种文件导入的方式以及atomic和nonatomic的区别

發布時間:2025/4/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Objective-C:三种文件导入的方式以及atomic和nonatomic的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、三種文件導入的方式比較: ?

類的前項聲明@class、import、include:

1、采用@class 類名的方式,它會告訴編譯器有這么一個類,目前不需要知道它內部的實例變量和方法是如何定義的,后面會告你,現在你就可以直接使用它,節約程序編譯時間; ? 2、采用import方式,能避免重復導入同一類,它導入的不但這個類的所有的內容,而且使用它之前,編譯器必須先對類的所有內容走一遍,就是先做預編譯處理,這樣比較耗費程序編譯的時間。 ? 3、采用include方式,不能避免重復導入的問題,但是它用在C/C++的代碼編寫中,因為#ifndef,#define,#endif這個是C/C++語言中的宏定義,通過宏定義避免文件多次編譯。所以在所有支持C/C++語言的編譯器上都是有效的,如果寫的程序要跨平臺,最好使用這種方式 ? 說明:在OC代碼編寫時,如果在一個類聲明文件.h中,需要另一個類時,使用前項聲明@class類名的方式是最好的選擇,因為它省略了代碼編譯的時間,提高了效率;但是在實現文件.m文件中必須要用import方式,因為實現文件中要用到類的實例變量和方法,因此編譯器必須先提前對類的內容做預編譯處理。 二、atomic和nonatomic的區別:

atomic:?設置成員變量的@property屬性時,默認為atomic,提供多線程安全。因為多線程的緣故,所有的對象在操作成員變量時都是同步的,因此,為了防止一個對象在操作數據時還沒有結束就被另一個對象搶走進行篡改,atomic為此提供了多線程安全機制,采用同步加鎖的方式,來控制進程的歸屬權。 ?? ?? 即: ? ? ? ? {lock} //第一個對象獲取操作數據后,給自己的進程加鎖,別人在我沒有釋放鎖之前就無法再去搶奪了。
? ? ? ? ? ? ? ? if (property != newValue) {?
? ? ? ? ? ? ? ? ?[property release];?
? ? ? ? ? ? ? ? ?property = [newValue retain];?
? ? ? ? ? ? ? ? ?}
? ? ? ? {unlock}//該對象操作完數據后,就釋放了同步鎖,別人就可以獲取這個數據進行自己的操作了。 ? 說明:鎖必須是唯一的。 ? nonatomic:?設置成員變量的@property屬性時,設置nonatomic,禁止多線程。這就直接消除了數據操作過程中被被另一方篡改的可能性。如果不是多線程,一般就采用這種設置。 ? ? ?

總結

以上是生活随笔為你收集整理的Objective-C:三种文件导入的方式以及atomic和nonatomic的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。