本文為大地瓜原創,歡迎知識共享,轉載請注明出處。
雖然你不注明出處我也沒什么精力和你計較。
作者微信號:christgreenlaw
@autoreleasepool
@autoreleasepool {
在這里邊的對象,只要發送過autorelease消息就不用擔心釋放的問題了
自動釋放池銷毀前,會給所有發送過autorelease的對象發送一條release消息
!!!(不保證銷毀對象,只是發送一條release消息而已)
}
//下面這樣寫也是一樣的
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Person *p = [[[Person alloc] init] autorelease];
[p run];
// 銷毀一個自動釋放池
[pool release];
Category
分類的聲明
@interface ClassName (CategoryName)
//方法聲明
//不允許添加變量
@end
分類的實現
@implement ClassName (CategoryName)
//方法實現
@end
注意事項
- 分類是給類添加方法的,不可用來添加實例變量(根本就不允許)
- 分類中的property只會生成getter/setter聲明,而不會生成實現以及對應的實例變量。
- 方法會從父類開始查找,然后是本類,子類
- 分類中可以訪問.h中的屬性
- 分類中如果有和原類同名的方法,則會使用分類中的方法(開發中忌諱這樣寫,如果你需要對已有方法進行自定義,請重寫或繼承,否則會引起很大的困惑)
- 若多個分類有重名方法,調用誰,則取決于編譯器最后編譯的是哪一個(也就是說每編譯一次重名方法都會對原來的方法進行覆蓋)
匿名分類(也叫延展 extension)
在iOS中你將天天和這個打交道。
所謂匿名,也就是沒有分類名,圓括號中沒有內容。一般寫在類的.m中,@implement之前。