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