Time of Update: 2015-12-28
標籤:Overview自 WWDC 2015 推出和開源 Swift 2.0 後,大家對 Swift 的熱情又一次高漲起來,在羨慕創業公司的朋友們大談 Swift 新特性的同時,也有很多像我一樣工作上依然需要堅守著 Objective-C 語言的開發人員們。今年的 WWDC 中介紹了幾個 Objective-C 語言的新特性,還是在“與 Swift 協同工作”這種 Topic
Time of Update: 2015-12-28
標籤:1.定義和使用Block 1 #import "ViewController.h" 2 3 @interface ViewController () 4 5 @end 6 7 @implementation ViewController 8 9 - (void)viewDidLoad {10 [super viewDidLoad];11 12 //定義block 無傳回值,無參數13 void (^nameBlock)() = ^ () {14
Time of Update: 2015-12-26
標籤:管理範圍:任何繼承NSObject的對象,基礎資料型別 (Elementary Data Type)不用進行管理本質原因:因為對象和基礎資料型別 (Elementary Data Type)在系統中的儲存空間不一樣,局部變數主要存放在棧中,而Object Storage
Time of Update: 2015-12-25
標籤:1.簡介在之前的文章[New learn]講解Objective-c的block知識中介紹了block的相關知識。本章中我們將以一個實際例子來簡單介紹一下block如何代替代理。 2.原有通過代理實現方式回顧在[How to]
Time of Update: 2015-12-25
標籤:集合的遍曆1.for迴圈遍曆2.列舉程式遍曆1 NSArray *enumArray = @[@"CM", @"PL", @"Lina", @"NEC"];2 //建立一個列舉程式,依附於數組3 NSEnumerator *rator = [enumArray objectEnumerator];4 //建立一個對象5 id object = nil;6 while (object = [rator nextObject])7 {8 NSLog(@"%@", object);9 }
Time of Update: 2015-12-24
標籤:數組類:有序集合不可變OC中的數組是一個容器,可以有序管理一系列元素,元素類型可以不相同,但是必須是物件類型。初始化方法:1.initWithObjects:2.便利構造器3.字面量。1 NSArray *array = @[@"SF", @"QOP", @"ST",
Time of Update: 2015-12-24
標籤:開篇只要用到Objective-C,我們每天都會跟方法調用打交道。我們都知道Objective-C的方法決議是動態,但是在底層一個方法究竟是怎麼找到的,方法緩衝又是怎麼運作的卻鮮為人知。本文主要從源碼角度探究了Objective-C在runtime層的方法決議(Method resolving)過程和方法緩衝(Method
Time of Update: 2015-12-24
標籤: NSArray、NSDictionary是不可以儲存C語言中的基礎資料型別 (Elementary Data Type)的。NSNumber可以將基礎資料型別 (Elementary Data Type)封裝成對象,這樣可以間接將基礎資料型別 (Elementary Data Type)存進NSArray、NSDictionary等集合類中。用法如下:#import <Foundation/Foundation.h>void number() { //
Time of Update: 2015-12-24
標籤: 與NSString、NSArray一樣,NSDictionary是不可變的,其對應可變類型為NSMutableDictionary。其用法如下:#import <Foundation/Foundation.h>@interface Student : NSObject@property (nonatomic, retain) NSString *name;+ (id)studentWithName:(NSString *)name;@end#import "Student.
Time of Update: 2015-12-24
標籤: NSNumber是NSValue的子類,前者只能封裝數字,後者可以封裝任意值。NSArray、NSDictionary只能儲存OC對象,不能儲存結構體。因此,如果想要在NSArray、NSDictionary裡放結構體,可以曲線救國,將結構體封裝成OC對象,再放到NSArray、NSDictionary等集合類中。void value() { CGPoint point = CGPointMake(10, 10); // 將結構體變數封裝成一個對象 NSValue *
Time of Update: 2015-12-25
標籤:1.回應程式法Bool isInstace = [p respondsTosesector:@selector(run)];// 沒有參數-(id) performSelector:selector(應用selector指定的方法) NSObject的方法// 一個參數-(id) performSelector:selector withObject:object(應用selector指定的方法,傳遞參數 object)// 二個參數-(id)
Time of Update: 2015-12-25
標籤:一. 多態1. 多態概念,定義什麼是多態:多態就是某一類事物的多種形態;表現形式: Animal *ani = [Dog new];多態條件:1.有繼承關係 2.有方法的重寫 2.多態代碼實現://執行個體化貓的對象Animal *animal = [Cat new]; //父類的指標指向子類對象;[animal eat]; //執行個體化狗的對象animal = [Dog new];
Time of Update: 2015-12-24
標籤:不可變字串操作:1.initWithFormat:。初始化操作,其中直接賦值的效果與該方法一樣,例如:1 NSString *string1 = [[NSString alloc] initWithFormat:@"iOS"];2 NSString *string2 = @"iOS";但需要注意的是,第二種方法聲明的是常量字串,位於記憶體裡的常量區。2.length。擷取字串長度,length的定義是1 @property (readonly) NSUInteger
Time of Update: 2015-12-22
標籤:溫故而知新,繼續複習。OC中可以通過聲明屬性來省略setter和getter,達到讓代碼簡潔的目的。使用屬性時,不需要在介面和m檔案中進行執行個體變數的聲明和setter
Time of Update: 2015-12-22
標籤:聲明式屬性的使用:聲明式屬性叫編譯期文法@property(retain,nonatomic)Some *s;@property(參數一,參數二)Some *s;參數1:retain:修飾引用(對象)資料類型 assgin:修飾基礎資料型別 (Elementary Data Type)(預設) copy:一些對象需要複製才能使用NSString readonly:唯讀,只有setter方法,沒有getter方法參數2:保證多線程的安全性 atomic:原子性 線程是安全的,但效率低(預設)
Time of Update: 2015-12-22
標籤:類方法用來建立對象的方法就是Factory 方法1、無參Factory 方法 建立對象,並給屬性一個預設值。//無參Factory 方法實現+(Student*)student{ return [[Student alloc]init];}2、有參Factory 方法 2.1.要依賴有參的初始化方法 -(id)initWithAge:(int)age; 2.2.建立對象,並給屬性一個指定的值 //有參Factory
Time of Update: 2015-12-22
標籤:無論我們使用什麼語言,總是會出現需要判斷兩個對象是否相等的情況,OC當然也不例外。首先看一段代碼: NSString *str1 = [[NSString alloc] initWithCString:"equal" encoding:NSUTF8StringEncoding]; NSString *str2 = @"equal"; if(str1 == str2) { NSLog(@"equal");
Time of Update: 2015-12-22
標籤: iOS的整體架構(以iOS8為例)圖如下: 從Cocoa Touch到Core
Time of Update: 2015-12-21
標籤:弱引用實在是太弱了,連通過該引用來申請空間都無法保持聯絡。舉個例子@interface classA:NSObject@porperty (nonatomic,weak) classA * tempClass1;@property (nonatomic,strong) classA * tempClass2;-(void)test;@end @implement classA-(void)test{ self.tempClass1 = [classA
Time of Update: 2015-12-19
標籤:提示:前面的較為常用1、建立字串執行個體方法:?- (instancetype)initWithFormat:(NSString*)format格式化產生一個字串對象?此方法較為常用,功能強大,用法:[[NSString alloc]initWithFormat:@"i am student at %@ of Technology?",@"GuangDongUniversity"];- (instancetype)