iOS6下Objective C最新特性

2021-06-13 14:45:02 字數 3819 閱讀 6836

ios6下objective-c最新特性

2013-03-15 16:26:08      收藏

wwdc2012發布了ios6,同時為objective c帶來了一些新特性以簡化

程式設計。下面是這些新特性,需要xcode4.4及以上版本支援:

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

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

@inte***ce songplayer : nsobject

- (void)playsong:(song *)song;

@end

@implementation songplayer

- (void)playsong:(song *)song

- (void)startaudio:(nserror **)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 : nsobject

@property(strong) nsstring *name;

@end

@implementation person

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

@end

即可以簡化為:

@inte***ce person : nsobject

@property(strong) nsstring *name;//arc開啟,否則需要自己release

@end

@implementation person

@end

4.建立nsnumber的新語法

xcode4.4以前的建立方式:

nsnumber *value;

value = [nsnumber numberwithchar:'x'];

value = [nsnumber numberwithint:12345];

value = [nsnumber numberwithunsignedlong:12345ul];

value = [nsnumber numberwithlonglong:12345ll];

value = [nsnumber numberwithfloat:123.45f];

value = [nsnumber numberwithdouble:123.45];

value = [nsnumber numberwithbool:yes];

xcode4.4以後可簡化為:

nsnumber *value;

value = @'x';

value = @12345;

value = @12345ul;

value = @12345ll;

value = @123.45f;

value = @123.45;

value = @yes;

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

nsnumber *pioversixteen = [nsnumber numberwithdouble: ( m_pi / 16 )];

nsnumber *hexdigit = [nsnumber numberwithchar: "012345679abcdef"[i % 16]);

nsnumber *usesscreenfonts = [nsnumber numberwithbool:

[nslayoutmanager usesscreenfonts]];

nsnumber *writingdirection = [nsnumber numberwithint:

nswritingdirectionlefttoright];

nsstring *path = [nsstring stringwithutf8string: getenv("path")];

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

nsnumber *pioversixteen = @( m_pi / 16 );

nsnumber *hexdigit = @( "012345679abcdef"[i % 16] );

nsnumber *usesscreenfonts = @( [nslayoutmanager usesscreenfonts] );

nsnumber *writingdirection = @( nswritingdirectionlefttoright );

nsstring *path = @( getenv("path") );

5.建立nsarray的新語法

nsarray* array;

array = @[ a, b, c ];

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

id objects = ;

nsuinteger count = sizeof(objects)/ sizeof(id);

array = [nsarray arraywithobjects:objects count:count];

6.建立nsdictionary的新語法

nsdictionary *dict;

dict = @{};

dict = @;

dict = @;

//相當於如下方式:

id objects = ;

id keys = ;

nsuinteger count = sizeof(objects) / sizeof(id);

dict = [nsdictionary dictionarywithobjects:objects

forkeys:keys

count:count];

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

nsmutablearray *mutableplanets = [@[

@"mercury", @"venus", @"earth",

@"mars", @"jupiter", @"saturn",

@"uranus", @"neptune"

] mutablecopy];

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

@implementation myclass

static nsarray *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最新特性

wwdc2012發布了ios6,同時為objective c帶來了一些新特性以簡化程式設計。下面是這些新特性,需要xcode4.4及以上版本支援 1.方法的申明順序不再要求 在方法裡面可以呼叫在後面申明的方法,編譯器會幫助查詢方法的申明,順序不再要求。如下 inte ce songplayer vo...

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...