iOS6下Objective C最新特性

2021-08-27 10:09:26 字數 4092 閱讀 2174

wwdc2012發布了ios6,同時為objective c帶來了一些新特性以簡化程式設計。下面是這些新特性,需要xcode4.4及以上版本支援:

1.方法的申明順序不再要求

在方法裡面可以呼叫在後面申明的方法,編譯器會幫助查詢方法的申明,順序不再要求。如下:

@inte***ce songplayer :-(

void

)playsong:

(song *

)song;

@end

@implementation songplayer-(

void

)playsong:

(song *

)song -(

void

)startaudio:

( **

)error

@end

2.列舉支援強型別

xcode4.4以前定義列舉使用如下方式,相當於定義了型別為int的列舉型別。

typedef

enum

nsnumberformatterstyle;

// typedef int nsnumberformatterstyle;

xcode4.4以後可以為列舉指明強型別,這樣在賦值時會有強型別限制(需要在build setting開啟suspicious implicit conversions)。定義如下:

typedef

enum nsnumberformatterstyle : nsuinteger nsnumberformatterstyle;

或使用ns_enum巨集來定義

typedef ns_enum(nsuinteger, nsnumberformatterstyle)

;

3.預設屬性合成

@inte***ce person :

@property

(strong)

*name;

@end

@implementation person

@synthesize name = _name;以後,這句也可以省略,xcode預設合成帶下劃線的成員變數

@end

即可以簡化為:

@inte***ce person :

@property

(strong)

*name;//arc開啟,否則需要自己release

@end

@implementation person

@end

4.建立nsnumber的新語法

xcode4.4以前的建立方式:

*value;

value =

[ numberwithchar:

'x'];

value =

[ numberwithint:

12345

];value =

[ numberwithunsignedlong:12345ul];

value =

[ numberwithlonglong:12345ll];

value =

[ numberwithfloat:123.45f];

value =

[ numberwithdouble:

123.45

];value =

[ numberwithbool:

yes];

xcode4.4以後可簡化為:

*value;

value = @'x';

value = @12345;

value = @12345ul;

value = @12345ll;

value = @123.45f;

value = @123.45;

value = @yes;

xcode4.4以前,使用語句建立nsnumber:

*pioversixteen =

[ numberwithdouble:

( m_pi /16)

]; *hexdigit =

[ numberwithchar:

"012345679abcdef"

[i %16]

); *usesscreenfonts =

[ numberwithbool:

[ usesscreenfonts]

]; *writingdirection =

[ numberwithint:

nswritingdirectionlefttoright];

*path =

[ stringwithutf8string:

getenv

("path")];

xcode4.4以後可以通過」()」方式建立:

*pioversixteen = @( m_pi /

16);

*hexdigit = @(

"012345679abcdef"

[i %16]

); *usesscreenfonts = @(

[ usesscreenfonts]

); *writingdirection = @( nswritingdirectionlefttoright );

*path = @(

getenv

("path"));

5.建立nsarray的新語法

* array;

array = @[ a, b, c ];

//相當於使用下面的方式建立:

id objects=

;nsuinteger count =

sizeof

(objects)

/sizeof(id

);array =

[ arraywithobjects:objects count:count];

6.建立nsdictionary的新語法

*dict;

dict = @;

dict = @;

dict = @;

//相當於如下方式:

id objects=

;id keys=

;nsuinteger count =

sizeof

(objects)

/sizeof(id

);dict =

[ dictionarywithobjects:objects

forkeys:keys

count:count];

7.mutable物件的建立,呼叫物件的-mutablecopy方法

*mutableplanets =

[@[@

"mercury", @

"venus", @

"earth",

@"mars", @

"jupiter", @

"saturn",

@"uranus", @

"neptune"

] mutablecopy];

8.靜態容器物件的建立,使用+initialize方法

@implementation myclass

static

*theplanets;+(

void

)initialize

}

9.可變陣列新的訪問方式:

@implementation songlist 

-(song *

)replacesong:

(song *

)newsong atindex:

(nsuinteger)idx

10.可變字典新的訪問方式:

@implementation database -(

id)replaceobject:(id

)newobject forkey:(id

)key

iOS6下Objective C最新特性

ios6下objective c最新特性 2013 03 15 16 26 08 收藏 wwdc2012發布了ios6,同時為objective c帶來了一些新特性以簡化 程式設計。下面是這些新特性,需要xcode4.4及以上版本支援 1.方法的申明順序不再要求 在方法裡面可以呼叫在後面申明的方法,...

iOS6下UITextField垂直居中問題

用xib生成的uitextfield文字預設是水平左對齊,垂直居中對齊的,但是用 生成的uitextfield確是預設是水平左對齊,垂直頂對齊。到uitextfield的標頭檔案看了一下,發現只有設定水平對齊的屬性,卻沒有垂直對齊屬性。因為xib裡都可以設垂直對齊屬性,所以應有的,於是再到其父類中找...

IOS 6 基礎框架概覽

原文日期 2012年12月23日 編者按 本文與原文標題略有不同,內容相同。可以看出ios和mac的變化主要就在cocoa touch上面差別。cocoa touch允許你操作螢幕上的事件。cocoa touch multi touch event alerts multi touch contro...