那些被遺漏的Objective C保留字

2021-06-18 12:54:39 字數 1824 閱讀 1920

今天翻到很久以前自己在網易部落格上寫的這篇文章,驚奇地發現自己都忘記了裡面的一些內容。所以我又重新學習了一下,然後改了改內容,挪到這裡。

steffen itterheim在他的部落格中總結了 objective-c 2.0 所有的編譯器保留字,並且對這些保留字做了介紹和使用示例。這些保留字如下:

@class

@defs

@protocol @required @optional @end

@inte***ce @public @package @protected @private @property @end

@implementation @synthesize @dynamic @end

@throw @try @catch @finally

@synchronized @autoreleasepool

@selector @encode

@compatibility_alias

@」string」

我把這些保留字過了一遍,發現很少用到的有 @dynamic @defs @encode @compatibility_alis,所以就給大家介紹一下這幾個關鍵字吧。

@dynamic 是相對於 @synthesize的,它們用樣用於修飾 @property,用於生成對應的的getter和setter方法。但是@ dynamic表示這個成員變數的getter和setter方法並不是直接由編譯器生成,而是手工生成或者執行時生成。

示例如下:

123

4567

@implementation

classname

@synthesize

aproperty

,bproperty

;@synthesize

cproperty

=instancevariablename

;@dynamic

anotherproperty

;// method implementations

@end

@defs 用於返回乙個objective-c類的struct結構,這個struct與原objective-c類具有相同的記憶體布局。就象你所知的那樣,objective-c類可以理解成由基本的c struct加上額外的方法構成。

示例**如下:

1

struct

你可能會想,什麼情況下才會需要使用這個關鍵字。答案是涉及非常底層的操作或優化的時候才會用到。像如這篇討論objective-c如何做快取優化的文章中,就用到了該關鍵字。

示例如下:

123

4567

8910

-

(void

)amethod

@compatibility_alis 是用於給乙個類設定乙個別名。這樣就不用重構以前的類檔案就可以用新的名字來替代原有名字。

示例如下:

1

@

compatibility_alias

aliasclassname

existingclassname

五一節到了,祝大家節日快樂!

posted by 唐巧

apr 29th, 2013 ios

那些被遺漏的Objective C保留字

steffen itterheim是 他在他的部落格中總結了 objective c 2.0 所有的編譯器保留字,並且對這些保留字做了介紹和使用示例。位址是 需要 這些保留字如下 我把這些保留字過了一遍,發現之前沒有聽過的有 dynamic encode compatibility alis,所以就...

可能被遺漏的https與http的知識點

例如在github pages頁面,這是乙個https頁面,如果在這個頁面向http傳送請求,那麼會直接被瀏覽器拒絕,並在控制台輸出下面的報錯資訊。jquery 1.11.3.min.js 5 mixed content the page at was loaded over https,but r...

那些被遺忘的cctype函式

這些函式都在cctype標頭檔案定義 isalnum c 如果c是字母或數字,則為true isalpha c 如果c是字母,返回true iscntrl c 如果c是控制字元,返回true isdigit c 如果c是數字,返回true isgraph c 如果c不是空格,但可以列印,返回true...