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