顯示具有 objective-C 標籤的文章。 顯示所有文章
顯示具有 objective-C 標籤的文章。 顯示所有文章

2012/08/25

UIImageView - contentMode 讓UIImage保持原大小、並置中於UIImageView中


誠如上圖,在set image給UIImageView的時候會碰到它自己被拉伸到和View一樣的大小
於是iOS SDK就有簡單的code可以調用來處理這個情形
就是contentMode~(繼承UIView的sub classes應該都可以透過這個方法調整它的內容)
將contentMode設定成UIViewContentModeCenter就可以達成了,
它有許多模式,可以多try看他效果如何 :D
模式列表:
(來源:UIView Class Reference - UIContentMode

調用方式:

2012/08/21

objectiv-C 中 retain/copy/assign的含義

原文:新手入門,請給講一下retain/copy/assign的含義,三樓回文

舉個例子
NSString *pt = [[NSString alloc] initWithString:@"abc"];

上面一段代碼會執行以下兩個動作
1. 分配一段記憶體空間用來存儲@"abc"  譬如:記憶體位址為:0X1111,內容為 "abc"
2. 分配一段記憶體空間用來存儲pt  譬如:記憶體位址為:0Xaaaa,內容自然為0X1111

接著分別比較assign、retain、copy

assign的情況:
NSString *newPt = [pt assign];
此時newPtpt完全相同:地址都是0Xaaaa、內容為0X1111。即newPt只是pt的別名,對任何一個操作就等於對另一個操作。 因此retainCount不需要增加。

retain的情況:
NSString *newPt = [pt retain];
此時newPt的地址不再為0Xaaaa,可能為0Xaabb,但是內容依然為0X1111。 因此newPtpt 都可以管理"abc"所在的記憶體。因此 retainCount需要增加1。

copy的情況:
NSString *newPt = [pt copy];
此時會在堆上重新開闢一段記憶體存放@"abc", 比如0X1122 內容為@"abc" ,同時會在記憶體上為newPt分配空間。譬如地址:0Xaacc 內容為0X1122 ,因此retainCount增加1,供newPt來管理0X1122這段記憶體位址。